实体框架:为什么我的实体的集合属性为空,LazyLoadingEnabled = false?

时间:2017-10-23 09:21:35

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

以下是上下文:

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,在序列化之前,我必须关闭Lazyloading。我错过了什么?

1 个答案:

答案 0 :(得分:3)

您已关闭此功能以按需加载相关项目,因此是的,它不再按需加载相关内容。您现在需要手动加载。

我认为你不能急于加载Find,所以它会像

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

只要您想一次性加载其他相关数据,就需要包含(并使用System.Data.Entity来获取包含的精美版本)。