gpt4 book ai didi

c# - Entity Framework 6 - 缺少仅包含引用不同表的主键的表

转载 作者:可可西里 更新时间:2023-11-01 07:57:38 25 4
gpt4 key购买 nike

我们正在学习 Entity Framework 6.1(来自 NuGet),因为我们正在远离 Linq2Sql。我们有一小部分表格将两个单独的表格相关联,如下所示。

第一代 EF6 数据库

数据库图:

enter image description here

架构概述:

enter image description here

在 Visual Studio 中,空白类库,执行 Database First EF6 EDMX 文件时,图表仅生成 TableA 和 TableC,而不会生成 TableB。

enter image description here

Visual Studio View :

enter image description here

可以看到只创建了TableA和TableC。从技术上讲,应该创建 TableB,因为您希望能够管理这些引用。

图中A和C的关联:

enter image description here

我觉得我错过了一个选项,或者误解了 Entity Framework 的一个关键概念。知道如何使用 T4 生成丢失的 TableB 吗? EDMX 文件确实显示了它,但由于某种原因,它没有生成到具有指示关系的两个属性的 .CS 文件中。

我们需要它的主要原因是我们扩展了 EF6 T4 模板以添加一些工厂模式以匹配我们现有的模型。因为它没有为 TableB 生成类,所以我们没有得到我们正在寻找的自动生成的代码。

想法/建议?谢谢。

最佳答案

弱实体或连接表不会由 EF 生成,您需要通过 Fluent API 或使用数据注释手动配置关系

如 Microsoft 网站所述:根据 Relationship 的约定:

Note: If you have multiple relationships between the same types (for example, suppose you define the Person and Book classes, where the Person class contains the ReviewedBooks and AuthoredBooks navigation properties and the Book class contains the Author and Reviewer navigation properties) you need to manually configure the relationships by using Data Annotations or the fluent API. For more information, see Data Annotations - Relationships and Fluent API - Relationships.

引用这个link了解更多信息

已更新

解决方法适用于 EDMX(但需要维护),如下所示:

  1. 从数据库中的连接表中删除外键
  2. 从数据库更新 EDMX
  3. 重新创建连接表中的外键

只要您不再从数据库更新您的模型,此变通方法就会起作用。

推荐的解决方案,保留由 EDMX 生成的所有内容,并使用用户“@TravisWhidden”报告“有用”的以下链接了解有关如何在这种情况下使用 crud 操作的更多信息

  1. Insert/Update Many to Many Entity Framework . How do I do it?
  2. https://www.youtube.com/watch?v=uMQwORSTGX4 (视频)

关于c# - Entity Framework 6 - 缺少仅包含引用不同表的主键的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31526066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com