0

我在两个 SQL 表之间创建了一个外键约束。然后我进入项目的 EDMX 并选择"updated model from database"。但是,我的图表显示表格之间没有线条,也没有任何导航属性。我关心线条的唯一原因是线条、导航属性和 EF 理解的关系都以某种方式联系在一起;而且我不想搞砸数据完整性,因为 EF 对关系有不同的看法。

问题:EF 如何从数据库中派生导航属性?如果在 SQL 本身内部维护状态,我需要向 Azure SQL 服务器发出哪些额外命令才能使其理解?还是我必须手动修改 EDMX?

这是我创建连接两个表的外键的方法

ALTER TABLE [dbo].[Employee]  
WITH CHECK ADD  CONSTRAINT [FK_Employee_Office_City] FOREIGN KEY([City])
REFERENCES [dbo].[Office] ([City])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[Employee] CHECK CONSTRAINT [FK_Employee_Office_City]
GO

重要部分:父表(Office)中的 [City] 列不是主键 - 但它是一UNIQUE INDEX列。

此外,我们最初使用的是 EF 代码,但随着项目的发展,我们切换到了数据库优先。我们必须在该切换点完全从数据库中重新生成 EDMX。并且由于旧表仍然具有良好的导航属性(EDMX 重新生成后),因此必须以某种方式将状态存储在数据库中,以便 EF 重新创建它们。就是不知道怎么...

4

1 回答 1

1

它不起作用,因为 EF 不理解唯一键。如果要建立映射关系,则主表中的键必须是主键。

于 2012-11-22T09:49:49.727 回答