【问题标题】:Entity Framwork: Why is my entity's collection property empty with LazyLoadingEnabled = false?实体框架:为什么我的实体的集合属性为空且 LazyLoadingEnabled = false?
【发布时间】:2017-10-23 09:21:35
【问题描述】:

这里是上下文:

public partial class Estate
{
    public Estate()
    {            
    }    
    public int Id { get; set; }  
    public virtual ICollection<Photo> Photos { get; set; }

}

public Estate GetEstate(int EstateId)
{
    using (var db = new Entities())
    {
        db.Configuration.LazyLoadingEnabled = false;
        return db.Estates.Find(EstateId);
    }
 }

当我调用 GetEstate(estateId) 时,照片集合总是空的。谁能帮忙。非常感谢。

根据此文档:msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx,在序列化之前,我必须关闭延迟加载。我错过了什么?

【问题讨论】:

  • 当然是。如果您打开延迟加载,这就是您得到的行为。你还期待什么?您需要立即加载照片。
  • @PeterBons 根据本文档:msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx,在序列化之前,我必须关闭延迟加载。我错过了什么?

标签: c# entity-framework asp.net-web-api serialization lazy-loading


【解决方案1】:

您关闭了按需加载相关项目的功能,所以是的,它不再按需加载相关项目。您现在需要通过预先加载手动执行此操作。

我认为您不能使用 Find 急切加载,所以它会类似于

db.Estates.Include(e => e.Photos).FirstOrDefault(e => e.Id == EstateId)

当您想一次性加载其他相关数据时,您将需要 Include(并使用 System.Data.Entity 来获得不错的 Include 版本)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 2021-10-26
    • 1970-01-01
    • 2012-04-22
    • 2014-01-29
    • 1970-01-01
    • 2014-05-31
    相关资源
    最近更新 更多