我正在首先使用实体框架代码处理一个 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);
}
但是当我尝试在没有选择的情况下获取值时,成员类始终为 null:
var com = db.MyParentClass.SingleOrDefault(b => b.Identity == id);
string xx = com.MyChildClass.PropertyValue; //MyChildClass is null
MessageBox.Show(xx);
有谁知道这里发生了什么?如何解决空问题?
您必须确保是否启用了延迟加载。
context.Configuration.ProxyCreationEnabled
应该是真的。context.Configuration.LazyLoadingEnabled
应该是真的。- 导航属性应定义为
public
、virtual
。这 如果属性未定义为 虚拟。
您也可以使用Include
进行预先加载。谢谢@CodeCaster的建议。
参考: https://www.entityframeworktutorial.net/lazyloading-in-entity-framework.aspx