gpt4 book ai didi

sql-server - Entity Framework 6 数据库优先方法不从 SQL Server 创建所有表

转载 作者:行者123 更新时间:2023-12-01 13:41:18 25 4
gpt4 key购买 nike

当我在我的 ASP.NET MVC 5 项目中使用“数据库优先”方法创建模型时,并不是所有来自 SQL Server 的表都在我的项目中创建。

我已逐步遵循本文中的所有内容: https://www.asp.net/mvc/overview/getting-started/database-first-development/creating-the-web-application

ASP.NET MVC 项目模型:

enter image description here

SQL Server 数据库:

enter image description here

我的 SQL Server 数据库中有三个表尚未在模型中创建。该表是 AspNetUserRoles、ContactsAddresses 和 IssuesItems

以下是三个缺失表格的设计:

AspNetUserRoles:

enter image description here

联系人地址:

enter image description here

问题项目:

enter image description here

所有三个缺失的表都是在 SQL Server 中创建的,以消除多对多关系,它们都有两个连接两个表的主键。

为什么会发生这种情况,我该如何解决?

谢谢。

最佳答案

EF 按照惯例避免映射 junction tables只有 PK/FKs 列。它将为您处理(填充/咨询/等)这些表。例如,如果您检查您的 Issue 实体,您将看到类型为 Item 的集合属性。

public virtual ICollection<Item> Items{get;set;}

Item 实体和您的其他实体也会发生同样的情况。

当您编写涉及这些集合属性之一的查询时,EF 将为您生成涉及联结表的正确 sql 语句,这有助于您跨过该桥,而无需编写额外的代码。

这并不意味着无法在 EF 中映射那些表,实际上有 people建议避免使用这种关系图,以便更加清晰并更接近您通常在 SQL 中执行的操作。但要做到这一点,您需要跳转到 Code First。例如,您可以使用 EF Power Tools 等工具生成模型或者,实际上,您可以使用 ADO.NET 实体数据模型,但使用数据库中的代码优先选项而不是 数据库中的 EF 设计器。使用这些工具,您的模型将像您已有的那样生成,但您可以添加类来表示您的联结表,并在它们之间创建一对多关系,并且涉及的实体就像此 blog post 中的示例一样,但恕我直言,我更喜欢 EF 为我处理这些表。

关于sql-server - Entity Framework 6 数据库优先方法不从 SQL Server 创建所有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35661368/

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