我首先使用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
,以避免对数据库执行查询。