AutoMapper 3.1.1和Entity Framework 6.1代理对象

我已经意识到这已经被问过了,但到目前为止我所阅读的解决方案似乎没有任何区别。 我正在使用Entity Framework 6.1和AutoMapper 3.1.1。 取以下对象: CompanyCompanyListItem ; 我试试这个:

 Mapper.Configure(); 

好吧,当我尝试进行实际的映射时,它会崩溃并烧毁,但没有定义映射。 我知道这是由于Entity Framework创建的代理对象引起的。 到目前为止我看到的一个解决方案是调用Map方法的重载版本:

 IQueryable companies = CompaniesService.FindCompanies(); Mapper.Map(companies, typeof(Company[]), typeof(CompanyListItem[])); 

它仍然无法正常工作并对我大喊大叫。

我还读过其他post,这些post在2.2.1中已经修复了吗? 这是不同的还是它倒退了? 我很感激建议。

您错误地使用Automapper,您需要使用QueryableExtensions命名空间,因此您的代码应该是

 IQueryable companies = CompaniesService.FindCompanies(); CompanyListItem[] results = companies.Project().To().ToArray(); 

另外,如果你要去另外的方式,你仍然有Mapper.Map错误,它应该是

 IQueryable companies = CompaniesService.FindCompanies(); CompanyListItem[] result = Mapper.Map,CompanyListItem[]>(companies); 

但我仍然建议使用.Project().To()方法,因为它将执行映射服务器端而不是客户端,因此您可能需要通过线路发送更少的数据。