我有3个表:课程,部门和大学。
当我从数据库中提取信息时(使用实体框架),我试图将课程映射到CourseDTO。我试图以这样的方式设置它,使CourseDTO自动检查关系是否存在(不为空),然后在DTO中连接关系。
问题是我跑了一次:
db.Courses.Include(c=>c.Department).Include(c=>c.University)
它映射了这些关系的每个嵌套排列,因此我自动映射到DTO只会创建一个stackoverflow,因为它会永远持续下去。 (例如,课程映射部门,该部门映射该部门的课程,映射部门等)
避免此问题的最佳解决方案是什么?
答案 0 :(得分:0)
我建议通过
关闭实体框架的延迟加载context.Configuration.LazyLoadingEnabled = false
这将防止您未明确包含的子对象在访问时被Entity Framework扩展。
或者创建自定义映射方法以仅包含DTO中所需的对象。