Gib*_*boK 11 c# linq-to-entities entity-framework entity-framework-4
我不确定EF 4中的导航属性,所以我会请你解释一下.
让我们想象一下这种情况:
一个)
我有两个实体,A并且在我的数据库中B有一个关系N到N(多对多)和树表
A,B以及一个AB 带有两个外键的链接表.
在这种情况下,EF创建一个导航属性,可以调用它X,也可以调用它XReference.
B)
我有两个实体,A并且在我的数据库中B有一个与N(一对多)和两个表的关系,
A并且B 有一个外键.
在这种情况下,EF创建一个导航属性可以调用它Y 但不能YReference调用它.
现在让我们采用场景A和B,并尝试找出B中是否有A的引用:
我的场景代码:
一个):
bool isA = a.XReference.EntityKey != null;
Run Code Online (Sandbox Code Playgroud)
我没有加载B记录(对吗?)
B):
bool isA = a.B.Any(x => x.BId == AId);
Run Code Online (Sandbox Code Playgroud)
我加载B记录
我的问题:
EntityKey在场景B中使用属性.谢谢你的帮助,我希望我能说清楚:-)
这是一种检查实体的相关记录是否加载的方法.
对于您有多个与实体相关的记录的实体,您可以像下面一样进行检查.(一对多的关系)
myDbContext.Entry(MyEntity).Collection(x => x.NavigationalProperyName).IsLoaded
Run Code Online (Sandbox Code Playgroud)
如果只有一个与实体相关的记录,那么你可以检查如下.(一对一的关系)
myDbContext.Entry(MyEntity).Reference(x => x.NavigationalProperyName).IsLoaded
Run Code Online (Sandbox Code Playgroud)
你的意思是:
// -to-one relationship
entity.RelatedItemReference.IsLoaded
// -to-many relationship
entity.RelatedItems.IsLoaded
Run Code Online (Sandbox Code Playgroud)