ger*_*rod 7 c# ado.net entity-framework
在ADO.Net实体框架中,我有一个对象,它有4个对其他对象的引用.出于某种原因,当我查询这些引用时,其中两个自动加载(如预期的那样),其中两个总是返回null.
奇怪的是,当我手动询问引用加载时,它们加载的只是花花公子.
举个例子:
if (account.HoldingEntity == null &&
account.HoldingEntityReference.EntityKey != null) {
account.HoldingEntityReference.Load();
account.HoldingEntity = account.HoldingEntityReference.Value;
}
Run Code Online (Sandbox Code Playgroud)
当我第一次检查时HoldingEntity
它始终为null,但是Load将返回HoldingEntity而没有问题.
有线索吗?
谢谢!
使用ADO.NET实体,您需要指定要自动加载的实体Include
,如
Dim entity = (From e in db.Entities.Include("SubEntity"))
Run Code Online (Sandbox Code Playgroud)
正如其他人所说,你需要.Include()
在v1中避免需要打电话.Load()
在4.0中,您将能够设置DeferredLoadingEnable
d ObjectContext
(我认为我们正在将此名称更改为更适合LazyLoadingEnabled
Beta2的时间).
至于为什么你已经加载了2个关系.这可能是一种叫做"关系修复"的副作用.
当两个相关实体处于同一个上下文中时,它们会自动将它们的关系固定为相互指向.因此,如果(我怀疑)4个实体中有2个已经在您的上下文中,当您执行查询时,您将最终处于加载了2个关系的情况,即使您没有调用.Include()
或.Load()
.
希望这可以帮助
干杯亚历克斯
归档时间: |
|
查看次数: |
7921 次 |
最近记录: |