我有一个实体框架3.5项目,我正在使用TPH继承。我的两个具体类型在它们自己的DAO类中,并包含一个将实体类投影到DTO中的选择器。但是,这两个具体类与另一个表都有类似的关系,我使用let语句来清晰地标识。我的问题是,我能否以某种方式重构这个let语句,因为当我创建更多继承的具体类时,我觉得我违反了DRY。我可以在linq语句中重构范围变量吗?
StudentDAO.cs:
var myDTO = from x in context.Students
let address = (from a in x.addresses where a.active == true select a).FirstOrDefault()
select new StudentDTO { id = x.id, studentname = x.studentname, address = a.address};
ProfessorDAO.cs:
var myDTO = from x in context.Professors
let address = (from a in x.addresses where a.active == true select a).FirstOrDefault()
select new ProfessorDTO { id = x.id, professorname = x.studentname, address = a.address};
那么有没有一种方法,我可以重构地址了这两个查询的?
链接的文章已经死了 – Fredou 2017-10-12 19:18:22
@Fredou我会更新链接 - 它应该是http: //tomasp.net/blog/dynamic-linq-queries.aspx – 2017-10-13 00:25:11