C# 作为另一个类成员的类始终为null

C# 作为另一个类成员的类始终为null,c#,wpf,entity-framework,null,C#,Wpf,Entity Framework,Null,我正在做一个C#WPF项目,首先使用实体框架代码 我有一个类,它的成员是另一个类的实例。我正在尝试访问成员类的属性值。我可以通过以下方式获得值: var com = context.MyParentClass.Where(p => (p.Identity == id)).Select(c => new { id

我正在做一个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的情况下获取值时,成员类始终为空:

var com = db.MyParentClass.SingleOrDefault(b => b.Identity == id);
                    string xx = com.MyChildClass.PropertyValue; //MyChildClass is null
                    MessageBox.Show(xx);

有人知道这里发生了什么吗?如何绕过空问题?

您必须确保是否启用了延迟加载

  • context.Configuration.ProxyCreationEnabled
    应为true
  • context.Configuration.LazyLoadingEnabled
    应为true
  • 导航属性应定义为
    public
    virtual
    。这个 如果属性未定义为,则上下文不会执行延迟加载 虚拟的
  • 您还可以使用
    Include
    进行即时加载。谢谢@CodeCaster的建议


    参考

    它是否包含在提取中?这在技术上是可行的,但您通常不希望延迟加载。OP只需要
    Include()
    。是的,他也可以使用即时加载。谢谢!