wpf 作为另一个类成员的类始终为空[重复]

cmssoen2  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(138)
    • 此问题在此处已有答案**:

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);

有人知道这是怎么回事吗?我怎么绕过零问题?

jhdbpxl9

jhdbpxl91#

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

  1. context.Configuration.ProxyCreationEnabled应该为真。
  2. context.Configuration.LazyLoadingEnabled应该为真。
    1.导航属性应定义为publicvirtual。如果该属性未定义为虚拟属性,则上下文将不会执行延迟加载。
    您也可以使用Include进行快速加载。谢谢@CodeCaster的建议。

参考https://www.entityframeworktutorial.net/lazyloading-in-entity-framework.aspx

相关问题