📅  最后修改于: 2023-12-03 15:23:35.764000             🧑  作者: Mango
当使用 Entity Framework 进行 C# 开发时,我们使用迁移来对数据库进行更新。但是,在某些情况下,系统无法确定哪个迁移配置应该使用,就会出现类似于“在程序集“EFCodeFirst”中发现了多个迁移配置类型”的错误。
这种错误通常发生在以下情况下:
要解决这个问题,我们需要显式地指定要使用的迁移配置类。我们可以通过修改 DbMigrationsConfiguration
子类的 MigrationsConfiguration
属性来指定要使用的迁移配置。
修改 MigrationsConfiguration
的方式有两种:
public Configuration()
{
MigrationsConfiguration = new MyMigrationConfiguration();
}
这样做的缺点在于,我们需要手动创建迁移配置类的实例,并将其赋值给 MigrationsConfiguration
属性。
App.config
或 Web.config
中配置<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<contexts>
<context type="MyNamespace.MyContext, MyAssembly">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyNamespace.MyContext, MyAssembly], [MyNamespace.MyMigrationConfiguration, MyAssembly]], EntityFramework">
<parameters>
<parameter value="MyContextConnectionString" />
</parameters>
</databaseInitializer>
</context>
</contexts>
</entityFramework>
在 entityFramework
节点下,我们可以配置多个上下文,每个上下文下又可以配置多个数据库初始化器。其中,MyNamespace.MyContext, MyAssembly
表示我们要使用的上下文的完全限定名和程序集名称,MyNamespace.MyMigrationConfiguration, MyAssembly
表示我们要使用的迁移配置的完全限定名和程序集名称。
这种方式的好处是,我们无需手动创建迁移配置类的实例,而是通过配置文件来指定。同时,我们也可以为每个上下文指定不同的迁移配置。
在此,我们简要介绍了如何解决“在程序集“EFCodeFirst”中发现了多个迁移配置类型”的问题,希望对你有所帮助。详细的解决方法可以参考 官方文档。