【发布时间】:2011-06-24 15:03:44
【问题描述】:
我不确定 EF 4 中的导航属性,所以我想请你解释一下。
让我们想象一下这个场景:
一)
我的数据库中有两个实体 A 和 B,关系为 N 到 N(多对多)和 tree 表
A 和 B 和一个链接表 AB 有两个外键。
在这种情况下,EF 创建一个导航属性,我们将其命名为 X 和 XReference。
B)
我的数据库中有两个实体 A 和 B,关系为 1 到 N(一对多)和 两个表
A 和 B 只有一个外键。
在这种情况下,EF 创建一个导航属性,我们将其命名为 Y 但不是 YReference。
现在让我们以场景 A 和 B 为例,尝试找出 B 中是否有任何 A 的引用:
我的场景代码:
A):
bool isA = a.XReference.EntityKey != null;
我不加载 B 记录(对吗?)
B):
bool isA = a.B.Any(x => x.BId == AId);
我确实加载了 B 条记录
我的问题:
- 为什么 EF 不创建 YReference 并且我不能在场景 B 中使用
EntityKey属性。 - 在我的代码场景 B 中,我真的不从 B 加载任何记录吗?
- 您知道快速运行此查询的更好方法吗?
谢谢大家的帮助,我希望我能说清楚:-)
【问题讨论】:
标签: c# entity-framework entity-framework-4 linq-to-entities