我有一个wpf项目,结构如下:
project1(solution)
|->Model(project)
|->DataAccess(project)
|->project1(project)
Project1是我编译并将exe传递给用户的项目。
现在我想启用自动迁移:Enable-Migrations –EnableAutomaticMigrations
project1是默认项目。当我运行命令时,显然它无法找到位于DataAccess
项目中的数据库上下文。我可以在DataAccess
项目中启用它。
但这是对的吗?如何在project1项目中启用它?
编辑:
我想我可以在DataAccess
项目中启用迁移,并将MyConfiguration引用回到DataAccess
项目吗?
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, MyConfiguration>());
但是我收到了这个错误:
Error 2 'DataAccess.Migrations.Configuration' is inaccessible due to its protection level
答案 0 :(得分:12)
您是否尝试过使用-StartupProjectName参数?
Enable-Migrations -EnableAutomaticMigrations -ProjectName DataAccess -StartupProjectName project1
最后一个参数指定模拟在该项目中运行,包括来自app.config / web.config的任何设置。
编辑:对于启用迁移,您看到的错误可能是因为默认情况下将MigrationsConfiguration创建为internal。你可以:
在project1的app.config / web.config中设置它。即使类型是内部类型,它也会在运行时解析并仍然有效:
<entityFramework>
<contexts>
<context type="DataAccess.FooContext, DataAccess">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[DataAccess.FooContext, DataAccess], [DataAccess.Migrations.Configuration, DataAccess]], EntityFramework, PublicKeyToken=b77a5c561934e089">
</databaseInitializer>
</context>
</contexts>
</entityFramework>