【发布时间】:2016-07-21 15:33:07
【问题描述】:
我在我的库项目中安装了 EF6。 在 App.config 中,我将连接字符串添加到本地数据库。 对于 EF 配置,我使用基于 EF 代码的配置: 应用程序配置:
<entityFramework codeConfigurationType="Com.EF.Example.EFRecordConfiguration, MyProject.Example">
</entityFramework>
EFRecordConfiguration.cs:
public class EFRecordConfiguration : DbConfiguration
{
public EFRecordConfiguration()
{
SetDefaultConnectionFactory(new System.Data.Entity.Infrastructure.SqlConnectionFactory());
SetProviderServices("System.Data.SqlClient", System.Data.Entity.SqlServer.SqlProviderServices.Instance);
}
}
我将属性 [DbConfigurationType(typeof(EFRecordConfiguration))] 添加到我的上下文类中。
当我使用命令 enable-migrations -Verbose 时,结果如下:
PM> enable-migrations -Verbose
Using StartUp project 'MyProject.Example'.
Using NuGet project 'MyProject.Example'.
Checking if the context targets an existing database...
System.Data.Entity.Migrations.Infrastructure.MigrationsException: The migrations configuration type 'Com.EF.Example.Migrations.Configuration' was not be found in the assembly 'MyProject.Example'.
à System.Data.Entity.Utilities.TypeFinder.FindType(Type baseType, String typeName, Func`2 filter, Func`2 noType, Func`3 multipleTypes, Func`3 noTypeWithName, Func`3 multipleTypesWithName)
à System.Data.Entity.Migrations.Utilities.MigrationsConfigurationFinder.FindMigrat ionsConfiguration(Type contextType, String configurationTypeName, Func`2 noType, Func`3 multipleTypes, Func`3 noTypeWithName, Func`3 multipleTypesWithName)
à System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.FindConfiguration()
à System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run()
à System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
à System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
à System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
à System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldInitialCreate(String language, String rootNamespace)
à System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0()
à System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
The migrations configuration type 'Com.EF.Example.Migrations.Configuration' was not be found in the assembly 'MyProject.Example'.
文件夹 Migrations 和文件 Configuration.cs 已添加到项目中,但是,我收到此错误。 当我尝试添加迁移时,同样的错误,但未添加迁移文件:
PM> add-migration InitialCreate -Verbose
Using StartUp project 'MyProject.Example'.
Using NuGet project 'MyProject.Example'.
System.Data.Entity.Migrations.Infrastructure.MigrationsException: No migrations configuration type was found in the assembly 'MyProject.Example'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).
à System.Data.Entity.Utilities.TypeFinder.FindType(Type baseType, String typeName, Func`2 filter, Func`2 noType, Func`3 multipleTypes, Func`3 noTypeWithName, Func`3 multipleTypesWithName)
à System.Data.Entity.Migrations.Utilities.MigrationsConfigurationFinder.FindMigrationsConfiguration(Type contextType, String configurationTypeName, Func`2 noType, Func`3 multipleTypes, Func`3 noTypeWithName, Func`3 multipleTypesWithName)
à System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.FindConfiguration( )
à System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run()
à System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
à System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
à System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
à System.Data.Entity.Migrations.Design.ToolingFacade.Scaffold(String migrationName, String language, String rootNamespace, Boolean ignoreChanges)
à System.Data.Entity.Migrations.AddMigrationCommand.Execute(String name, Boolean force, Boolean ignoreChanges)
à System.Data.Entity.Migrations.AddMigrationCommand.<>c__DisplayClass2.<.ctor>b__0()
à System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
No migrations configuration type was found in the assembly 'MyProject.Example'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).
在包管理器控制台中选择的默认项目是“MyProject.Example”。 我尝试在控制台项目中执行相同的操作(相同的配置),没有错误。
我在 EF 配置中有什么忘记了吗?
编辑: 我发现了问题所在:我为我的库项目激活了程序集签名,这似乎是问题所在。 我该怎么做才能使 EF 迁移系统与强名称程序集一起使用?
【问题讨论】:
标签: c# entity-framework-6 nuget