我正在评估对现有架构使用EF - 问题是我无法弄清楚如何在外键不是主表的主键的表之间建立关联。
例如,foo
可能有许多bars
,如此定义(原谅伪代码):
table foo {
int foo\_id pk,
char(10) foo\_code,
...
}
table foobar {
int bar\_id pk,
char(10) bar\_foo\_code fk(foo.foo\_code),
...
}
我缺少什么能够在foo_foobar
实体上创建Bars
关联,从而创建Foo
导航属性?
答案 0 :(得分:3)
Linq to entities不支持不指向表主键的外键(请参阅日志消息3)。 Linq to entities会将其视为桌面上的普通字段。您将无法导航到与其链接的实体。
如果您有现有架构,我建议使用edm generator,因为这将创建EMDX文件,代码隐藏甚至视图代码(可能非常大)。如果您现有的方案非常大,请查看此post,其中说明了如何处理大型模式。
当您运行EDM生成器时,您将找到所有不受支持的内容。
查看以前的EDMGen2.exe日志,我们收到了以下类型的消息:
我们还发现,由于EDM生成的代码文件超过80 MB,Linq项目实际上已经很大程度地崩溃了Visual Studio。