首页 > 解决方案 > 无法将联结表(由于多对多关系)添加到实体数据模型设计器 (edmx)

问题描述

我在实体框架中有一个数据库模型。edmx 有一些表,现在我正在尝试添加两个新表(它们是连接表)。我曾经看到有人在过去添加了这两个表,但由于某种原因,这些表没有显示在图表中。它们未列在实体类型列表中(在图节点下),但我确实在实体商店中看到了它。

我做了以下事情:

  1. 编辑 edmx 文件并删除与这两个表有关的所有条目。然后从 edmx 设计器中,我通过“从数据库更新模型...”选项添加了这 2 个联结表。这 2 个联结表显示在那里并且可以添加。表格继续而不显示在图表中。
  2. 选择并删除 edmx 图表中的所有表,然后将它们再次添加到 edmx。再一次,表格继续,而不显示在图表中。

这 2 个表有它们的主键和指向 edmx 图中已经显示的其他表的外键。由于 2 个表之间存在多对多关系,这 2 个表也是联结表。

此外,我已经重新启动了 Visual Studio,清理了所有解决方案并再次重建,但没有成功。

知道我能做些什么来添加这两个表吗?

更新#1:磁盘中也没有创建类。

其中一张表的 SQL Server 定义如下(另一张表类似):

CREATE TABLE [dbo].[DeptPerson](
    [deptId] [int] NOT NULL,
    [personId] [varchar](20) NOT NULL,
 CONSTRAINT [PK_DeptPerson] PRIMARY KEY CLUSTERED 
(
    [deptId] ASC,
    [personId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
) ON [PRIMARY]

ALTER TABLE [dbo].[DeptPerson]  WITH CHECK ADD  CONSTRAINT [FK_DeptPerson_Department] FOREIGN KEY([deptId])
REFERENCES [dbo].[Department] ([deptId])
GO

ALTER TABLE [dbo].[DeptPerson] CHECK CONSTRAINT [FK_DeptPerson_Department]
GO

ALTER TABLE [dbo].[DeptPerson]  WITH CHECK ADD  CONSTRAINT [FK_DeptPerson_Person] FOREIGN KEY([personId])
REFERENCES [dbo].[Person] ([personId])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[DeptPerson]  CHECK CONSTRAINT [FK_DeptPerson_Person]
GO

更新#2:正如 Gert Arnold 解释的那样,联结表(中间表)在多对多关系(我的情况)中被设计隐藏。在这篇文章中也证实了这一点。我不知道连接表被设计隐藏了......

标签: entity-frameworkvisual-studio-2013edmxedmx-designer

解决方案


推荐阅读