我在两个SQL表之间创建了一个外键约束。然后我进入了项目的EDMX并选择了“从数据库中更新的模型”。但是我的图表显示表之间没有行,也没有任何导航属性。我关心线条的唯一原因是因为线条,导航属性和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重新创建它们。只是不知道怎么......
答案 0 :(得分:1)
它不起作用,因为EF不了解唯一键。如果要映射关系,则主表中的键必须是主键。