【问题标题】:Entity Framework Code First: Enable-Migrations error实体框架代码优先:启用迁移错误
【发布时间】:2013-08-02 12:36:16
【问题描述】:

这应该是关于在包管理器控制台中第一次为实体框架代码优先运行Enable-Migrations 命令时参数使用的一个非常基本的问题。以下是我的解决方案的分离方式:

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

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

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

我似乎遍历了“默认项目名称”(包管理器控制台下拉菜单)的所有排列,并添加 -ProjectName 无济于事。 (我的解决方案的启动项目是 MVC 项目仅供参考)。

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

【问题讨论】:

  • 您是否在解决方案中配置了项目依赖项?您的迁移在您的数据建模项目中,对吗?
  • 是的,所有的类引用都在那里并且解决方案构建。尚未创建任何迁移,因为我无法启用迁移,但是是的,我希望它们位于 MyMvcApp.DataModeling 项目中。
  • 您是否尝试过“Enable-Migrations -StartUpProjectName MyMvcApp.Web”?
  • 您是否选择了 .DataModeling 作为 Package Manager Console 中的默认项目?
  • 这两件事我都做了。我发现了问题,现在会回答。

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


【解决方案1】:

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

不管怎样,如果您只是想生成数据库而不启用迁移,那么您的 DataModeling 项目中不需要 App.config。您只需将以下代码行添加到您的 Global.asax 文件并运行您的应用程序:

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

【讨论】:

  • 我认为这里还有其他工作,因为我正在使用迁移并且我的 .Data 在任何地方都没有连接字符串,连接字符串在 .Web 项目中并且迁移工作得很好.
  • 您能否提供一个示例 app.config 文件?尝试启用迁移,但始终失败。根据您的回复,这可能会解决它,但如果没有示例文件,我不知道如何正确设置它
猜你喜欢
  • 2013-01-02
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
相关资源
最近更新 更多