2012-11-22 60 views
0

我在两个SQL表之间创建了一个外键约束。然后我进入了该项目的EDMX并选择了“来自数据库的更新模型”。但是,我的图表显示表之间没有行,也没有任何导航属性。我关心线条的唯一原因是因为线条,导航属性和EF理解的关系都以某种方式绑定在一起;我不想因为数据完整性而搞砸了,因为EF对关系有不同的看法。通过SQL外键关系获取实体框架的导航属性

问题: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 

重要的一块:父表(办公室)的[城市]列不是主键 - 但它是一个UNIQUE INDEX列。

此外,我们首先使用EF代码,但随着项目的发展,我们首先切换到数据库优先。我们不得不在EDMX的数据库中完全重新生成EDMX。而且由于旧表格仍具有良好的导航属性(EDMX重新生成后),该状态必须以某种方式存储在数据库中以供EF重新创建。只是不知道如何...

回答

1

它不会工作,因为EF不理解唯一的密钥。如果要映射关系,主体表中的键必须是主键。

+0

好的,我很担心。 EF图中缺少导航属性的主要缺点是什么?我假设在SQL中有外键约束,关系完整性会好的,对吗? – DeepSpace101

+0

主要缺点是您必须自己处理相关对象。在加载/保存过程中,EF没有执行automagic。 –

+0

我放弃了约束条件,将原则表中的关键字作为主键,并添加了约束并从数据库中刷新了模型。仍然没有线路!任何其他要求? – DeepSpace101