正常情况一般是采用匿名:
db.Table.AsNoTracking().Where().Select(cc => new {
cc.id,
cc.name
});
同时也有用具体实体来映射:
db.Table.AsNoTracking().Where().Select(cc => new Table { id = cc.id, name = cc.name });
现在问题来了, 因为不同场景需要不同字段, 业务处理代码均一样, 仅仅映射的字段不一样而已, 这地方该如何处理?
分不多, 见谅
采用老方法,数据源从外部传入,内部只进行处理
使用不同DbContext,在每个DbContext中分别进行映射
这样还是没有减轻代码量, 几百行代码就 select new {} 不一样。。。。
@Y屌丝: 不同DbContext可以重用整个LINQ代码
如果只是select new {}不一样,那只要把select new {}之前的代码重用就行了。
@dudu: 看来还是只能采用老方法,数据源从外部传入,内部只进行处理
.Select(u =>
{
if (XXX)
return new { Name = u.FirstName + u.LastName };
return new { Name = u.LastName + u.FirstName };
});