- 此问题在此处已有答案**:
Load child entity on the fetch of the Parent entity EFCore(3个答案)
Why EF navigation property return null?(7个答案)
两年前关闭了。
我首先使用实体框架代码在一个C#WPF项目上工作。
我有一个类,它的成员是另一个类的示例。我正在尝试访问成员类的属性值。我可以通过以下方式获取值:
var com = context.MyParentClass.Where(p => (p.Identity == id)).Select(c =>
new
{
id = c.Identity,
PropertyValue = c.MyChildClass.PropertyValue
}
);
foreach(var item in com)
{
string xx = item.PropertyValue;
MessageBox.Show(xx);
}
但是当我尝试不使用select来获取值时,成员类总是null:
var com = db.MyParentClass.SingleOrDefault(b => b.Identity == id);
string xx = com.MyChildClass.PropertyValue; //MyChildClass is null
MessageBox.Show(xx);
有人知道这是怎么回事吗?我怎么绕过零问题?
1条答案
按热度按时间jhdbpxl91#
您必须确保是否启用了延迟加载。
context.Configuration.ProxyCreationEnabled
应该为真。context.Configuration.LazyLoadingEnabled
应该为真。1.导航属性应定义为
public
、virtual
。如果该属性未定义为虚拟属性,则上下文将不会执行延迟加载。您也可以使用
Include
进行快速加载。谢谢@CodeCaster的建议。参考:https://www.entityframeworktutorial.net/lazyloading-in-entity-framework.aspx