【问题标题】:No option to add EDMX file to project in MVC solution没有将 EDMX 文件添加到 MVC 解决方案中的项目的选项
【发布时间】:2019-02-21 20:14:14
【问题描述】:

我创建了一个 MVC 应用程序。我现在想向解决方案添加一个新的类库项目,然后向该项目添加一个 EDMX 文件。

这曾经很容易。但现在我必须在 .NET Core 和 .NET Standard 之间做出选择。但看起来我选择哪个并不重要,因为如果我使用这些框架中的任何一个创建类库,Visual Studio 没有提供向它们添加 EDMX 文件的选项!而且我没有看到添加标准 .NET Frameworks 类库的选项。

那么,将新项目添加到我的 MVC 解决方案,然后将 EDMX 文件添加到该项目的秘诀是什么?

注意:我可以选择将 EDMX 文件直接添加到 MVC 项目中。但我更愿意把它放在一个单独的项目中,我以前做过。

【问题讨论】:

  • 您使用的是哪个版本的 MVC?这是 MVC Core 还是 asp.net MVC 6?如果是 ASP.NET Core Web App,你使用的是什么框架?Full .NET Framework 还是 Core?你是什​​么意思你看不到添加 .NET Framework 类库的选项?在“添加新项目”>“Windows 桌面”>“类库 (.NET Framework)”模板中您缺少吗?
  • @TamásHuj 我刚刚进入 Visual Studio 并选择了一个新的 MVC 解决方案。它似乎已经为常规的完整 .NET 应用程序构建了一个项目。现在有多种方法可以创建 MVC 应用程序吗?
  • 是的,有,现在有 2 个不同的 MVC 框架,旧的 ASP.NET MVC 和新的 ASP.NET Core MVC。 en.wikipedia.org/wiki/ASP.NET_MVC第一个是使用完整的.NET Framework,第二个是在.NET Core中实现的,它是跨平台的。

标签: asp.net-mvc entity-framework edmx


【解决方案1】:

EDMX 文件已被 EF Core 弃用,我相信它也已从 .net 核心项目中删除。 如果您需要这样做,您可能需要将其添加到普通的 .net 4.5 项目中并复制文件,但这对于 .net core 或 .net 标准使用它是没有意义的。

无论如何,您都应该使用 Code First,因为它更简洁、更易于使用。

如果你已经有数据库,可以参考这个链接,它可以帮助你从数据库中搭建类

https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db

【讨论】:

  • 我只想使用实体框架。如果不在 EDMX 文件中,模型是如何构建的?
  • EDMX 文件只是使用 EF 的一种旧方式。推荐的方法是使用 Code First。在这里您可以定义 Context 类和实体类,并使用名为 Migration 的东西来创建数据库,并且每当您需要更新数据库时,您只需编辑映射到表的实体类并创建一个新的迁移,该迁移将仅编写脚本更改并通过数据库应用它。点击我分享的链接了解更多
  • 我很确定您仍然可以在不先使用代码的情况下使用实体框架。
  • 您可以并且可以通过从标准 .net 4.5 项目复制文件来做到这一点,但在这种情况下,它不会是 .net 核心项目,最好使用普通的完整 .net 项目和您将使用已弃用的东西
  • 必须从不同类型的项目中复制文件是不支持的。这曾经是支持的。现在听说不是。我错过了一些东西。
【解决方案2】:

@Jonathan:EDMX 文件是旧的做事方式。 EDMX 只不过是一个 T4 模板,有助于创建 edmx。

使用 .Net Core 的最佳方法是: 1.创建一个.net核心库项目。从here 添加 entityframeworkcore nuget 包 2. 使用这个链接,从DB到generate your model's

不再支持 EDMX 的概念。

希望这会有所帮助。

【讨论】:

  • 你是说,以前支持实体框架的地方,我现在需要下载包?为什么会倒退?
【解决方案3】:

根据您的描述,您使用的是旧的 ASP.NET MVC 框架,而不是新的 Core 框架,在这种情况下,您使用的是完整的 .NET 框架。因此,当您创建新的类库项目时,您应该使用完整的 .NET Framework,因为 .NET Core 和 .NET Standard 不支持 EDMX。如果您选择了这个,您可以将您的 ADO.NET 实体数据模型添加到其中:

【讨论】:

  • 但我认为您可以将核心项目添加到已经有标准项目的解决方案中。所以我不确定为什么我现有的项目使用什么很重要。
  • 标准与 Core 和完整的 .NET Framework 兼容。这意味着,您可以将标准添加到现有的 Core 项目或现有的完整 .NET Framework 项目中。但正如他们在其他 cmets 中提到的,Core 和 Standard 不支持 EDMX,所以如果你想使用它,你需要完整的 .NET Framework,这就是我试图解释的,你需要添加具有完整 .NET Framework 的类库。
【解决方案4】:

至少对于 EF v6,如果您使用 EF 迁移,则数据库的每个(“状态”/“目标”)快照(存储在迁移历史数据库表和迁移文件中)都是一个 EDMX 文件,正在等待解码,保存到文件,然后在 VS (Visual Studio) 中加载。 ;)

这有点深入(或至少具有挑战性),但“System.Data.Entity.Migrations.Edm.ModelCompressor”可能会提供线索。

基本上,您可以从一个/相关迁移中提取 EDMX。但我确实同意应该使用 Code-First 方法来实现,EDMX 现在只是一种开发辅助工具。

【讨论】:

  • 你在这里说的很模糊。如果您建议可以根据迁移表中的信息构建 EDMX,那您就错了。
  • 恐怕我是对的——至少就 EFv6 而言,你只需要知道如何去做;这是一条线索 - 请参阅“System.Data.Entity.Migrations.Edm.ModelCompressor”。
  • 我们这里没有逃生室。你的答案应该是明确的,而不仅仅是一个模糊的提示。目前尚不清楚这如何帮助 OP 在 Visual Studio 中简单地将 EDMX 添加到他们的项目中。
  • 我试图指出 EDMX 可能已经在引擎盖下可用 - 主要用于在迁移历史表中进行挑选和构建,但我不想超载这个主题可能是不太直接的答案/解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 1970-01-01
相关资源
最近更新 更多