gpt4 book ai didi

c# - AutoMapper 3.1.1 和 Entity Framework 6.1 代理对象

转载 作者:行者123 更新时间:2023-11-30 14:10:41 29 4
gpt4 key购买 nike

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

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().To<T>()方法,因为它将执行映射服务器端而不是客户端,因此您可能需要通过网络发送的数据更少。

关于c# - AutoMapper 3.1.1 和 Entity Framework 6.1 代理对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22723133/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com