我意识到已经有人问过这个问题,但到目前为止我读过的解决方案似乎没有什么作用。我正在使用 Entity Framework 6.1 和 AutoMapper 3.1.1。采取以下对象:Company
and CompanyListItem
;我试试这个:
Mapper.Configure<Company, CompanyListItem>();
好吧,当我尝试进行实际映射时,它崩溃并烧毁,但没有定义映射。我知道这是由于实体框架创建的代理对象引起的。到目前为止我见过的一种解决方案是调用 Map 方法的重载版本:
IQueryable<Company> companies = CompaniesService.FindCompanies();
Mapper.Map(companies, typeof(Company[]), typeof(CompanyListItem[]));
但它仍然不起作用并且对我大喊大叫。
我还读过其他帖子,说这个问题从 2.2.1 开始已经修复了?这是不同的还是回归了?我很感激建议。
您错误地使用了 Automapper,您需要使用可查询扩展命名空间,所以你的代码应该是
IQueryable<Company> companies = CompaniesService.FindCompanies();
CompanyListItem[] results = companies.Project().To<CompanyListItem>().ToArray();
另外,如果你打算用另一种方式来做,你仍然有Mapper.Map
错了,应该是
IQueryable<Company> companies = CompaniesService.FindCompanies();
CompanyListItem[] result = Mapper.Map<IEnumerable<Company>,CompanyListItem[]>(companies);
但我仍然建议这样做.Project().To<T>()
方法,因为它将执行服务器端而不是客户端的映射,因此您可能需要通过网络发送的数据更少。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)