我正在使用EF6 Code First。有两个表,Lesson
和LessonSections
。 LessonSections
表有一个外键指向Lesson.Id
。
这是已删除非重要字段的Lesson
类:
public partial class Lesson
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Lesson()
{
LessonSections = new HashSet<LessonSection>();
}
[StringLength(50)]
public string Id { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<LessonSection> LessonSections { get; set; }
}
这是我如何初始化我的数据模型:
var db = new Touch_Type_Trainer_DB.DataModel();
db.Configuration.ProxyCreationEnabled = false;
db.Configuration.LazyLoadingEnabled = false;
在我第一次调用数据库来检索数据库中的第一课时后,结果对象没有LessonSections
Lesson
和LessonSections
之间的循环引用上停止。)
现在我的原始对象从数据库中加载了两个部分,即使我从未访问过LessonSections
属性,即使LazyLoadingEnabled设置为False!
为什么会加载LessonSections
?
编辑:
我正在使用Newtonsoft将对象序列化为JSON字符串。也许在Newtonsoft中有一个配置设置,我应该设置它,以便它不会陷入循环引用问题?
此外,我确实希望在大多数代码中启用LazyLoading,只是在序列化部分不启用。