【问题标题】:Cannot enable migrations in library project无法在库项目中启用迁移
【发布时间】: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


    【解决方案1】:

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

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

    编辑:这是不可能的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 2018-04-27
      • 2021-01-25
      • 1970-01-01
      • 2020-07-03
      • 2012-03-20
      相关资源
      最近更新 更多