Linq to Entities From vs Join

时间:2014-01-17 03:50:55

标签: entity-framework linq-to-entities many-to-many

使用'来自'加入多对多表时是否有区别?条款,或者加入'条款?返回的结果集是相同的。

例如,在多对多关系中包含三个表(包括联结表):学生,学生课程,课程:

var query = from student in context.Students
            from studentcourse in student.StudentCourses
            where studentcourse.CourseID == 4
            select student;


var query = from student in context.Students
            join studentcourse in context.StudentCourses
            on student.StudentID equals studentcourse.StudentID
            where studentcourse.CourseID == 4
            select student;
  1. 他们中的任何一个都是最佳做法吗?
  2. 性能?这个比那个好吗?我还没有机会使用SQL Profiler。
  3. 我避免使用Include有两个原因:

    1. 我经常需要条件包含,因此上面提到了两种技术。
    2. 根据我的阅读,Include会返回整个相关表格,可能会对性能产生负担。

1 个答案:

答案 0 :(得分:0)

在内部,LINQ to Entities将创建两个不同的查询,其中第一个示例将使用WHERE,第二个示例将加入表。但是,这对性能没有影响,因为SQL优化器将为这两个查询创建相同的执行计划。见Inner join vs Where

明智的最佳做法,第一种选择几乎总是可取的。使用导航属性可以使您的代码更易于阅读和理解,并消除了必须自己加入表格的麻烦。