c# – AutoMapper 3.1.1和Entity Framework 6.1代理对象
发布时间:2020-12-16 02:01:02 所属栏目:百科 来源:网络整理
导读:我已经意识到这已经被问到了,但到目前为止,我所阅读的解决方案似乎没有任何区别.我正在使用Entity Framework 6.1和AutoMapper 3.1.1.取以下对象:Company和CompanyListItem;我试试这个: Mapper.ConfigureCompany,CompanyListItem(); 好吧,当我尝试进行实际
我已经意识到这已经被问到了,但到目前为止,我所阅读的解决方案似乎没有任何区别.我正在使用Entity Framework 6.1和AutoMapper 3.1.1.取以下对象:Company和CompanyListItem;我试试这个:
Mapper.Configure<Company,CompanyListItem>(); 好吧,当我尝试进行实际映射时,它会崩溃并烧毁,但没有定义映射.我知道这是由于Entity Framework创建的代理对象造成的.到目前为止我看到的一个解决方案是调用Map方法的重载版本: IQueryable<Company> companies = CompaniesService.FindCompanies(); Mapper.Map(companies,typeof(Company[]),typeof(CompanyListItem[])); 它仍然不起作用,并对我大喊大叫. 我还读过其他帖子,从2.2.1开始修复了这个帖子?这是不同的还是它倒退了?我很感激建议. 解决方法
您错误地使用Automapper,您需要使用
QueryableExtensions命名空间,因此您的代码应该是
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().对于< T>()方法,因为它将执行映射服务器端而不是客户端,因此您可能需要通过线路发送更少的数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |