Kev*_*xes 10 c# entity-framework-4 ef-migrations
我有一个wpf项目,结构如下:
project1(solution)
|->Model(project)
|->DataAccess(project)
|->project1(project)
Run Code Online (Sandbox Code Playgroud)
Project1是我编译并将exe传递给用户的项目.
现在我想启用自动迁移: Enable-Migrations –EnableAutomaticMigrations
project1是默认项目.当我运行该命令时,显然它将无法找到位于DataAccess项目中的数据库上下文.我能够在DataAccess项目中启用它.
但这是对的吗?如何在project1项目中启用它?
编辑:
我想我可以在DataAccess项目中启用迁移,并将MyConfiguration引用回到DataAccess项目中吗?
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, MyConfiguration>());
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
Error 2 'DataAccess.Migrations.Configuration' is inaccessible due to its protection level
Run Code Online (Sandbox Code Playgroud)
Jim*_*mmy 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>
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
7819 次 |
| 最近记录: |