嵌套关系永远不会结束实体框架

时间:2015-01-11 16:24:04

标签: c# asp.net asp.net-mvc entity-framework asp.net-web-api

我有3个表:课程,部门和大学。

当我从数据库中提取信息时(使用实体框架),我试图将课程映射到CourseDTO。我试图以这样的方式设置它,使CourseDTO自动检查关系是否存在(不为空),然后在DTO中连接关系。

问题是我跑了一次:

db.Courses.Include(c=>c.Department).Include(c=>c.University)

它映射了这些关系的每个嵌套排列,因此我自动映射到DTO只会创建一个stackoverflow,因为它会永远持续下去。 (例如,课程映射部门,该部门映射该部门的课程,映射部门等)

避免此问题的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:0)

我建议通过

关闭实体框架的延迟加载
context.Configuration.LazyLoadingEnabled = false

这将防止您未明确包含的子对象在访问时被Entity Framework扩展。

或者创建自定义映射方法以仅包含DTO中所需的对象。