Automapper、MapFrom 和 EF 动态代理

2024-04-05

我一直在尝试将域对象映射到报表视图模型。在测试中一切都很顺利,我伪造了实体框架代码并使用构建器返回完全填充的 pocco 对象。现在我实际上正在访问数据库并返回数据,我看到一些奇怪的动态代理类型错误。

这是我的代码示例:

public class ContactMapping  : Profile
{
    protected override void Configure()
    {
        Mapper.CreateMap<Contact, ReportRowModel>()
             .ForMember(dest => dest.Gender, opt => opt.MapFrom(src => src.Gender.Name));

    }

}

映射代码是这样的:

var contact = GetContactFor(clientPolicy);
Mapper.DynamicMap(contact, rowModel);
return rowModel;

联系人字段均已正确填充,除了rowModel.Gender返回 System.Data.Entity.DynamicProxies.Gender_3419AAE86B58120AA2983DA212CFFEC4E42296DA14DE0836B3E25D7C6252EF18 的字段

我见过人们使用 Map 而不是 DynamicMap 时遇到问题的解决方案,但我还没有发现 .ForMember 映射像这样失败的任何情况。

有什么建议。


您的 EF 查询不会返回性别,而是返回一个代理,该代理可以在评估时为您获取性别,这不是 AutoMapper 构建映射来处理的类型。

您要么需要在查询中急切地获取性别,要么使用AutoMapper IQueryable 扩展 https://github.com/AutoMapper/AutoMapper/wiki/Queryable-Extensions的 Project 方法让 AutoMapper 发出匿名投影(同样在您的查询中),而不是在从 EF 上下文返回结果后尝试应用 AutoMapping。

一般来说,这是避免 Select N+1 问题的良好实践。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Automapper、MapFrom 和 EF 动态代理 的相关文章

随机推荐

  • 无法使用 Maven 中的配置文件和属性构建适配器

    我已经使用创建了一个http适配器mfpdev adapter create但我发现 adatper xml 配置文件包含服务器连接配置 我想相应地更改为 dev test produciton 环境 所以我尝试通过更改 pom xml 来
  • 无法启动 Spring Boot 应用程序 - 资源位置不能为空

    第一次尝试springboot 但无法启动 我使用了示例应用程序 https github com spring guides gs spring boot git https github com spring guides gs spr
  • 你在子类中调用 super.finalize() 吗?

    我 在某处 读到过finalize 因为当子类被垃圾收集时 不能保证调用父类 这是否意味着大多数开发人员会覆盖finalize 在子类中并调用super finalize Finalize 不会自动为超类调用 因此 如果您重写 Finali
  • 如何将数组键从大写更改为小写?

    我有一个键为大写的数组 我想将它们更改为小写 我怎样才能做到这一点 我尝试做 data1 array foreach row as key gt value key strtolower str data1 key value data d
  • lib模块和主模块之间如何通信

    建筑工程 我有2个模块 app 应用 box 库模块 PROBLEM 我正在尝试使用一部分app模块来自box模块 问题是app模块依赖于box模块因此我无法指出box模块 因为这会产生循环依赖 如何去app模块方法来自box模块 Or 如
  • “Git Bash here”不会保留会话之间的 bash 历史记录[重复]

    这个问题在这里已经有答案了 我在 Windows 7 上运行 Git 1 8 0 preview20121022 并且安装时使用 Git Bash Only 对 Windows cmd 的干扰最小 当我从开始菜单快捷方式打开 Git Bas
  • “order by”在mysql中花费太多时间

    在 MySQL 中 查询中的 order by 花费了很多时间 SHOW PROFILES 显示排序过程所花费的时间 是否有任何设置 解决方法可以减少排序时间 如果您在排序依据的字段上没有索引 请添加一个 在某些情况下 MySQL 可以使用
  • 为什么使用 setattr() 和 getattr() 内置函数?

    通过阅读文档 我确切地了解了什么获取属性 http docs python org 3 3 library functions html getattr and 设置属性 http docs python org 3 3 library f
  • .htaccess 停止内部重定向

    首先这是我的目录结构 localhost p htaccess localhost p inc style css 我有这个片段 localhost p htaccess Options MultiViews FollowSymLinks
  • 为 Windows azure blob 设置 access-control-allow-origin 的任何方法

    我将 json blob 存储在 azure 上 并通过 XHR 访问它 在尝试加载这些 blob 时 我收到此错误 XMLHttpRequest 无法加载http myazureaccount blob core windows net
  • Django enctype="multipart/form-data" 未设置 POST 数据

    我需要发送文件和输入文本中的一些数据 这是我正在处理的表格
  • Python json.dumps TypeError:尝试从变量转换时,“set”类型的对象不可序列化,在硬编码时工作

    我尝试从 python 中的变量创建 JSON 字符串 但我得到了奇怪的行为 当我对 pro 对象进行硬编码时 结果格式良好 rev Package ID bbbbb nBuild nnumber 154 nBuilt n s ver st
  • 如何在 XPath 中选择布尔值节点?

    我有一个 XML 文档和关联的架构 它定义了几个具有以下属性的属性 xs boolean类型 的词汇值xs boolean are true false 1 and 0 所以看来要正确选择具有特定布尔值的属性 我必须编写如下内容 attri
  • ASIHTTPRequest 在 ios8 上导致应用程序崩溃

    这里我使用 JSON 来解析数据ASIHTTPRequest相同的代码在我的较低版本的 iOS 上运行良好 iOs7及以下 但我无法在我的 iOS 8 设备上运行它 日志越来越好 但应用程序崩溃了 可能从服务器得到较晚的回复 它不应该因延迟
  • 展开R公式

    这可能看起来是一个简单的问题 但是有没有快速而可靠的方法来扩展像这样的公式 f formula y a b to y a b ab 我会尝试这个 f y a b reformulate labels terms f f 2 y a b a
  • 使用 HTTP 身份验证和 maven-jaxb2-plugin 生成 WSDL 架构

    我想使用 jaxb2 插件生成可从安全 URL 访问的 WSDL 使用用户 ID 和密码进行基本身份验证 我应该在哪里指定生成架构的凭据 如果不提供它们 我会在架构生成过程中收到一个 401 错误
  • 关于 WCF 通道的困惑

    我对代理和通道感到困惑 根据我的阅读 WCF 客户端使用代理通过一系列通道传递消息 每个通道负责特定的任务 例如一个通道对消息进行编码 另一个通道对其进行加密 当我看到下面的代码时 我的困惑开始了 When proxy MyMethod 叫
  • C++ 异常处理增加了多少占用空间

    这个问题对于嵌入式开发尤其重要 异常处理为生成的二进制输出增加了一些占用空间 另一方面 毫无例外 错误都需要以其他方式处理 这需要额外的代码 最终也会增加二进制大小 我对你的经历很感兴趣 尤其是 您的编译器为异常处理添加的平均占用空间是多少
  • php 中 mysql 的程序实现和面向对象实现有何区别? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Automapper、MapFrom 和 EF 动态代理

    我一直在尝试将域对象映射到报表视图模型 在测试中一切都很顺利 我伪造了实体框架代码并使用构建器返回完全填充的 pocco 对象 现在我实际上正在访问数据库并返回数据 我看到一些奇怪的动态代理类型错误 这是我的代码示例 public clas