0

首次对实体框架代码第一次在Package Manager控制台运行Enable-Migrations命令时,这应该是一个非常基本的问题有关参数使用。这里是我的解决方案是如何分离出来:实体框架代码优先:启用的迁移错误

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

当我运行允许的迁移,我得到一个讨厌的错误说:

未能加载程序集“MyMvcApp.DataModeling”。 (如果你使用Visual Studio中的Code First迁移,如果您的解决方案的启动项目未引用包含您的迁移项目会发生这种情况,你可以更改启动项目为您的解决方案或使用-StartUpProjectName参数。)

我已经通过看似“默认项目名称”(包管理器控制台下拉)的每一个排列并添加-ProjectName无济于事运行。 (我的解决方案的启动项目是MVC项目FYI)。

鉴于我是如何分开我的项目,我怎么得到Enable-Migrations命令工作?

+0

你有你配置项目解决方案的依赖?你的迁移是在你的数据建模项目中吗? – SOfanatic

+0

是的,所有的类参考都在那里,并且解决方案构建。尚未创建迁移,因为我无法启用迁移,但是,我期望它们位于MyMvcApp.DataModeling项目中。 – im1dermike

+0

您是否尝试过“启用迁移-StartUpProjectName MyMvcApp.Web”? –

回答

0

原来的问题是,你绝对需要与您的连接字符串的App.config文件的项目与的DbContext类,使迁移。在我的情况下,这是MyMvcApp.DataModeling项目。我想我可以在我的MVC项目的Web.config文件中使用连接字符串,在我的Enable-Migrations控制台命令中添加一个-StartUpProjectName 'MyMvcApp.Web'参数,但这似乎不起作用。

对于它的价值,如果你只是想生成数据库,而不是让迁移,你不要在你的数据建模项目需要一个app.config。你可以只添加的代码行下面的Global.asax文件并运行你的应用程序:

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

我认为这里有其他的东西,因为我使用的是迁移,而我的'.Data'没有任何连接字符串,连接字符串在'.Web'项目中,迁移工作得很好。 – SOfanatic

+0

你可以提供一个示例app.config文件吗?尝试启用迁移,但始终失败。从您的回复中可以解决这个问题,但没有示例文件,我不知道如何正确设置它 –