获取导航属性的延迟加载状态

时间:2019-09-11 01:03:29

标签: c# entity-framework linq-to-sql lazy-loading

我首先使用EF6数据库,然后延迟加载所有导航属性。

我有一个需要将其中一种模型转换为JSON字符串的要求。

此模型包含很多集合,这些集合可能包含成千上万条记录,我想避免序列化这些属性。 除此之外,我还要忽略序列化的属性,这些属性仍未加载到内存中。

想法是在这些导航属性上使用条件序列化。

基于Newtonsoft documentation,我实现了这样的条件序列化:

public class Foo
{
    public Foo()
    {
        BarCollection = new HashSet<Bar>();
    }

    // This property can potencially be loaded (or not) and could contain a few or thousands of records
    public virtual ICollection<Bar> BarCollection { get; set; }

    public bool ShouldSerializeBarCollection()
    {
        return /*BarCollection is loaded && */ BarCollection.Count < 10 ? true : false;
    }    
}

有什么方法可以检查导航属性是否已被延迟加载?我仅在将集合加载到内存中时才检查Count,以避免对数据库执行查询。

0 个答案:

没有答案