无法在库项目中启用迁移

时间:2016-07-21 15:33:08

标签: c# entity-framework-6 nuget

我在我的图书馆项目中安装了EF6。 在App.config中,我将连接字符串添加到本地数据库。 对于EF配置,我使用基于EF代码的配置: App.config中:

<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'.

项目中添加了文件夹迁移和文件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).

选择的默认项目是&#39; MyProject.Example&#39;在包管理器控制台中。 我尝试在控制台项目中执行相同的(相同配置),没有错误。

EF配置中有什么遗漏吗?

编辑: 我发现了什么问题:我为我的库项目激活了程序集签名,这似乎是问题所在。 如何使EF迁移系统与强名称程序集一起使用?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方法: EntityFramework CodeFirst migrations in dll with strong name

但是,如何避免在GAC中添加程序集,重新启动VS然后添加迁移?

编辑:这是不可能的。