2012-11-06 87 views
10

我有一个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 

回答

12

您是否尝试过使用-StartupProjectName参数?

Enable-Migrations -EnableAutomaticMigrations -ProjectName DataAccess -StartupProjectName project1

最后一个参数指定效仿该项目内运行,包括的app.config/web.config中的任何设置。

编辑:对于启用迁移,您看到的错误可能是因为MigrationsConfiguration默认情况下创建为内部。您可以:

  • 设为公开
  • 设置在数据访问项目数据库初始化某处
  • 将其设置为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> 
    
+0

这为我工作,我有一个解决方案,并从这个我用'启用的迁移-ProjectName ProjectNameGoesHere两个项目 - StartupProjectName StartupProjectNameGoesHere -ContextTypeName ContextNameToAddMigrationsGoesHere'为解决方案上的第二个项目启用迁移。 – Dev

相关问题