2014-09-25 91 views
4

我正在開發ASp.net mvc 5中的應用程序並使用代碼優先方法。無法加載文件或程序集'MySql.Data

當我嘗試啓用遷移,然後它拋出一個錯誤。我在參考中找到了MySQL.Data.dll。可能是什麼問題?我上傳了source at here

如果可能的話,引導我。謝謝

錯誤在下面提到;

enable-migrations -contexttypename SMSContext 
 
Checking if the context targets an existing database... 
 
System.IO.FileLoadException: Could not load file or assembly 'MySql.Data, Version=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 
 
File name: 'MySql.Data, Version=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' 
 
    at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) 
 
    at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) 
 
    at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) 
 
    at System.Type.GetType(String typeName) 
 
    at System.Data.Common.DbProviderFactories.GetFactory(DataRow providerRow) 
 
    at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver.GetService(Type type, Object key, Func`3 handleFailedLookup) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver.GetService(Type type, Object key) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.CachingDependencyResolver.<>c__DisplayClass1.<GetService>b__0(Tuple`2 k) 
 
    at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.CachingDependencyResolver.GetService(Type type, Object key) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r) 
 
    at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() 
 
    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.GetService(Type type, Object key) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.RootDependencyResolver.GetService(Type type, Object key) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r) 
 
    at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() 
 
    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.GetService(Type type, Object key) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.CompositeResolver`2.GetService(Type type, Object key) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.DbDependencyResolverExtensions.GetService[T](IDbDependencyResolver resolver, Object key) 
 
    at System.Data.Entity.Internal.LazyInternalConnection.CreateConnectionFromProviderName(String providerInvariantName) 
 
    at System.Data.Entity.Internal.LazyInternalConnection.InitializeFromConnectionStringSetting(ConnectionStringSettings appConfigConnection) 
 
    at System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String name, AppConfig config) 
 
    at System.Data.Entity.Internal.LazyInternalConnection.Initialize() 
 
    at System.Data.Entity.Internal.LazyInternalConnection.get_Connection() 
 
    at System.Data.Entity.Internal.LazyInternalContext.get_Connection() 
 
    at System.Data.Entity.Infrastructure.DbContextInfo..ctor(Type contextType, DbProviderInfo modelProviderInfo, AppConfig config, DbConnectionInfo connectionInfo, Func`1 resolver) 
 
    at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext, DatabaseExistenceState existenceState, Boolean calledByCreateDatabase) 
 
    at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration) 
 
    at System.Data.Entity.Migrations.Design.MigrationScaffolder..ctor(DbMigrationsConfiguration migrationsConfiguration) 
 
    at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run() 
 
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 
 
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 
 
    at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner) 
 
    at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldInitialCreate(String language, String rootNamespace) 
 
    at System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0() 
 
    at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 
 

 
WRN: Assembly binding logging is turned OFF. 
 
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. 
 
Note: There is some performance penalty associated with assembly bind failure logging. 
 
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. 
 

 
Could not load file or assembly 'MySql.Data, Version=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

回答

12
在你的web.config

<DbProviderFactories> 
    <remove invariant="MySql.Data.MySqlClient" /> 
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
</DbProviderFactories> 

版本設置爲6.9.3.0,但在你的bin文件夾中的文件MySql.Data.dll和MySql.Data.Entity.EF6.dll有版本6.8.3.0

修改您的web配置以使用正確的版本或從packages文件夾更新您的dll。

問題的根源在於,當您使用nuget安裝了MySql.Data.Entities時,它會使用較舊版本取代較新版本的MySql.Data,但Web配置保持不變。

+0

我在webconfig中更改了版本6.8.3.0。 – softech 2014-09-25 10:25:09

+1

但我得到這個異常。 未找到具有不變名稱「MySql.Data.MySqlClient」的ADO.NET提供程序的實體框架提供程序。確保提供程序在應用程序配置文件的'entityFramework'部分中註冊。有關更多信息,請參閱http://go.microsoft.com/fwlink/?LinkId=260882。 – softech 2014-09-25 10:25:51

+0

沒幫忙?然後撤消您的更改並將bin文件夾中的文件替換爲正確版本 – aleha 2014-09-25 10:31:29

相關問題