实体框架和自动映射中的数据投影

Tom*_*leu 5 c# linq-to-entities entity-framework automapper

我想使用AutoMapper构建一个ViewModel(展平 - 数据投影),以便在ASP.net MVC应用程序中使用.

var tmp = from x in db.Mailings select Mapper.Map<Mailing, MailingViewModel>(x);
return View(tmp.ToList());
Run Code Online (Sandbox Code Playgroud)

当然,当我尝试上面的示例时,我得到EF错误"LINQ to Entities无法识别方法...方法,并且此方法无法转换为存储表达式."

我知道可以在Automapper发挥其魔力之前移动.ToList(),但随后我从Db中获取所有字段(我只需要20个字段中的3个)

是否可以以干净的方式使用它.Clean =并非所有字段都是从DB中提取的,而只是ViewModel所需的字段.在Automapper中有可能吗?或者也许是其他图书馆?(不用手动做;))

bre*_*ick 9

是的,这是非常可能的.见http://www.devtrends.co.uk/blog/stop-using-automapper-in-your-data-access-code

编辑:我最近发现,AutoMapper中已存在此基础.为AutoMapper.QueryableExtensions添加一个using语句,并为您提供名为Project <>()的IQueryable扩展