【问题标题】:.NET Core 2.0 API with EF6 and .edmx file?.NET Core 2.0 API 与 EF6 和 .edmx 文件?
【发布时间】:2017-12-27 15:50:00
【问题描述】:

我想使用面向完整 .NET 框架的 .NET Core 2.0 构建一个 API,这样我就可以使用 Entity Framework 6 和一个 .edmx 文件。这可能吗?如何注入 .edmx 文件生成的 DbContext?

我想这样做是因为我的项目使用大量存储过程,我不想继续手动执行它们。我对 .NET Core 还很陌生,所以如果您能给我任何帮助,我们将不胜感激。

【问题讨论】:

  • 您是否做过自己的研究并亲自尝试过?针对具体问题,您会得到更好的答案
  • 我进行了一些研究,但找不到任何有关使用 .edmx 文件的文档。你说得对,我的问题太笼统了,我想知道如何注入 .edmx 文件生成的 DbContext。
  • 我正在使用 EF6。
  • @genzop - 你找到解决方案了吗?我在同一条小溪里寻找一根棍子或可以划桨的东西!!

标签: c# entity-framework-6 asp.net-core-2.0 edmx


【解决方案1】:

我了解您想要做的是使用新的 .csproj 文件格式,并针对任何经典的 .NET 框架,例如 .NET 4.5.2。

虽然项目本身运行良好,但您不能在“添加新项目”对话框中选择“ADO.NET 实体数据模型”,这会迫使您从经典 .csproj 项目中复制现有的 EDMX。

即使在您这样做之后,尝试更改设计器中的 EDMX 并按“保存”每次只会给我一个 TargetInvocationException,而不是更新模型。

查看日志文件,原因很清楚:设计人员无法使用新的 .csproj 文件。

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: The "Content" rule is missing the "AutoGen" property.
    at Microsoft.Verify.Operation(Boolean condition, String unformattedMessage, Object arg1, Object arg2)
    at Microsoft.VisualStudio.ProjectSystem.VS.Implementation.PropertyPages.DynamicTypeBrowseObject.<<VSLangProj-FileProperties-get_IsCustomToolOutput>b__38_0>d.MoveNext()

所以现在,如果你想继续使用设计器,你就很不走运了。

【讨论】:

    【解决方案2】:

    您可以将 edmx 放在针对 dot net framework 3.5 或更高版本的单独项目中,但请记住禁用自动生成的代码,因为生成的代码不适用于 dot net core。 在另一个以 dot net core 为目标的项目中,使用 t4 模板 .tt。这些文件将通过文件系统路径读取 edmx 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 2018-01-15
      相关资源
      最近更新 更多