【问题标题】:ASP.NET MVC 6 + EF6 with Migrations带有迁移的 ASP.NET MVC 6 + EF6
【发布时间】:2015-12-12 06:44:08
【问题描述】:

我想将 ASP.NET MVC 6 与启用迁移的 Entity Framework 6 一起使用。我的 Entity Framework 6 DbContext 位于与 MVC 6 项目不同的程序集中。我可以让 Entity Framework 6 与 MVC 6 一起工作,但是一旦我启用迁移,我就会收到一个 FileNotFoundException 和消息 Could not find file '{AssemblyName}.resources'.

有没有办法让 MVC 6 与带有迁移的 EF 6 一起工作?

这是我放在 GitHub 上的一个测试项目,用于演示该问题:https://github.com/johnnyoshika/mvc6-ef6-migrations

【问题讨论】:

  • 你能继续吗?一些微软组件使用“try and if not found create”机制来创建内部结构(例如 System.Xml 的 Xsl 部分做类似的事情)...
  • 当你遇到这个错误时你会怎么做?
  • 感谢 cmets @StephenReindl 和 @JotaBe!我将在今天晚些时候检查我是否可以继续通过此异常。
  • 对我来说完全一样——“FileNotFoundException 未被用户代码处理”,所以服务器只响应 500 Internal Server Error。代码只是创建上下文并在发生时尝试添加记录。
  • 我看到与@DmitryNogin 相同的结果。 FileNotFoundException 导致 500 错误。这是我放在 GitHub 上的一个测试项目,它演示了这个问题:github.com/johnnyoshika/mvc6-ef6-migrations

标签: asp.net-mvc entity-framework entity-framework-6 asp.net-core-mvc


【解决方案1】:

我在 beta7 中遇到了这个问题。看起来 ASP.NET 5 不能很好地处理嵌入在 csproj 项目中的资源 (.resx)。如果您在本地引用 aspnet/Mvc 和 Entityframework (6),您会看到它试图显示一些有用的调试信息,但这样做是使用本地化的。在您的示例中,它尝试从here 访问LoggingTargetDatabase 字段,但错误地期望它嵌入Entity2 而不是EntityFramework,因为我怀疑是ASP.NET 5 缺乏对.resx 的支持。

这是我在 ASP.NET 5 中尝试进行 EF6 迁移时发现的几个问题之一,最后我编写了一个小型 DNX 命令库 [Github | myget] 将以编程方式调用 EF6 迁移,类似于 EF7 的做法。

【讨论】:

  • 谢谢@StaffordWilliams。我很难让你的图书馆正常工作。您将哪个依赖项映射到ef 命令?是EntityFramework.Commands 还是Atquin.EntityFramework.Migrations?此外,我的 DbContext 位于单独的程序集中。 config.json 文件是否应该存在或存在于 MVC 6 项目中?
  • @JohnnyOshika Atquin.EntityFramework.Migrations 应该在您的数据 project.config 中映射到 ef。 Config.json 也应该在数据项目中,或者,您可以使用 -p 和 -c 指定提供程序和连接字符串。
  • 就像一个魅力。有几件事让我绊倒了。 1) 我没有意识到我必须手动创建一个继承自DbMigrationsConfiguration 的类。 2) 我无法让 config.json 中的连接字符串发现工作,所以我使用了命令行 args。它现在工作得很好。谢谢!
猜你喜欢
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多