我一直在为我的应用程序使用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数据库的唯一两种推荐方法。
我想了解更多关于如何编写第二种方式的信息。有没有人知道一些解释这个的好链接?
答案 0 :(得分:0)
method versus query based syntax with Linq
基于方法比基于查询更全面。 你可以混合一点。 查询可以更具可读性,特别是在Joins周围。