实体框架代码优先:启用 - 迁移错误

时间:2013-08-01 14:16:33

标签: entity-framework ef-code-first code-first ef-migrations

在Package Manager控制台中第一次为Entity Framework Code First运行Enable-Migrations命令时,这应该是关于参数使用的一个非常基本的问题。以下是我的解决方案的分离方法:

  • 我有一个名为 MyMvcApp.DomainEntities 的项目,其中包含我的域实体POCO类和存储库接口。
  • 我有一个名为 MyMvcApp.DataModeling 的项目,其中包含EF参考(DbContext,存储库实现)。
  • 最后,我有一个 MyMvcApp.Web 项目,它是MVC4项目,还包含web.config中的EF连接字符串(到本地SQL Server数据库)。

当我运行Enable-Migrations时,我收到一个令人讨厌的错误:

无法加载程序集“MyMvcApp.DataModeling”。 (如果在Visual Studio中使用Code First Migrations,如果解决方案的startUp项目未引用包含迁移的项目,则可能会发生这种情况。您可以更改解决方案的startUp项目或使用-StartUpProjectName参数。)< / em>的

我似乎经历了“默认项目名称”(包管理器控制台下拉列表)的每个排列,并添加-ProjectName无济于事。 (我的解决方案的启动项目是MVC项目FYI)。

鉴于我如何分离项目,如何让Enable-Migrations命令工作?

1 个答案:

答案 0 :(得分:0)

事实证明,问题在于您绝对需要一个App.config文件,其中包含项目中的连接字符串以及启用迁移的DbContext类。在我的例子中,这是MyMvcApp.DataModeling项目。我以为我可以在我的MVC项目的Web.config文件中使用连接字符串,方法是在我的Enable-Migrations控制台命令中添加-StartUpProjectName 'MyMvcApp.Web'参数,但这似乎不起作用。

对于它的价值,如果您只想生成数据库而不启用迁移,则不需要在DataModeling项目中使用App.config。您只需将以下代码行添加到Global.asax文件并运行您的应用程序:

using (var context = new EntityContext())
{
    context.Database.Initialize(false);
}