使用EF6查询数据库时使用LINQ有什么好处?

时间:2014-03-26 01:54:41

标签: sql-server linq entity-framework

我一直在为我的应用程序使用EF6,很快就会转到6.1。通常我的所有EF都使用LINQ来处理:

        var exams = _examsRepository
            .GetAll()
            .Where(q => q.SubjectId == subjectId)
            .Include(q => q.Tests)
            .ToList();

但是我只是建议将其用于特定查询:

        var exams1 = (from ex in DbContext.Exams
                     join t in DbContext.Tests on ex.ExamId equals t.ExamId
                     join ut in DbContext.UserTests on t.TestId equals ut.TestId
                     where ut.UserId == "123"
                     select new { ex, t, ut }).ToList();

有人能告诉我使用第二种方式有什么好处。我意识到一个好处是,我似乎可以做第一种方式无法完成的事情(没有人能够在第一种方式中编码第二个例子中所需要的东西。如果有其他优点怎么办?它们是我使用EF查询SQL Server 2012数据库的唯一两种推荐方法。

我想了解更多关于如何编写第二种方式的信息。有没有人知道一些解释这个的好链接?

1 个答案:

答案 0 :(得分:0)

method versus query based syntax with Linq

基于方法比基于查询更全面。 你可以混合一点。 查询可以更具可读性,特别是在Joins周围。