实体框架代码优先:启用迁移错误
Posted
技术标签:
【中文标题】实体框架代码优先:启用迁移错误【英文标题】:Entity Framework Code First: Enable-Migrations error 【发布时间】:2013-08-02 12:36:16 【问题描述】:这应该是关于在包管理器控制台中第一次为实体框架代码优先运行Enable-Migrations
命令时参数使用的一个非常基本的问题。以下是我的解决方案的分离方式:
当我运行 Enable-Migrations 时,我收到一个令人讨厌的错误:
无法加载程序集“MyMvcApp.DataModeling”。 (如果您在 Visual Studio 中使用 Code First 迁移,如果您的解决方案的启动项目未引用包含您的迁移的项目,则可能会发生这种情况。您可以更改解决方案的启动项目或使用 -StartUpProjectName 参数。)
我似乎遍历了“默认项目名称”(包管理器控制台下拉菜单)的所有排列,并添加 -ProjectName
无济于事。 (我的解决方案的启动项目是 MVC 项目仅供参考)。
鉴于我是如何分离我的项目的,我如何让Enable-Migrations
命令工作?
【问题讨论】:
您是否在解决方案中配置了项目依赖项?您的迁移在您的数据建模项目中,对吗? 是的,所有的类引用都在那里并且解决方案构建。尚未创建任何迁移,因为我无法启用迁移,但是是的,我希望它们位于 MyMvcApp.DataModeling 项目中。 您是否尝试过“Enable-Migrations -StartUpProjectName MyMvcApp.Web”? 您是否选择了 .DataModeling 作为 Package Manager Console 中的默认项目? 这两件事我都做了。我发现了问题,现在会回答。 【参考方案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 文件?尝试启用迁移,但始终失败。根据您的回复,这可能会解决它,但如果没有示例文件,我不知道如何正确设置它以上是关于实体框架代码优先:启用迁移错误的主要内容,如果未能解决你的问题,请参考以下文章