我是否正确使用了 Automapper 2.0 的 Include 功能?

2024-01-03

要么我没有,要么它不起作用...我有一个 Source 类,我想将其映射到彼此继承的多个视图。

基本上,基类是 Detail,子类是 Edit 或 Update,它们使用与 Detail 相同的所有数据,再加上几个其他字段来管理自己的列表或其他内容。

这是我正在使用的地图:

Mapper.CreateMap<Ticket, Detail>()
                .Include<Ticket, Update>()
                .Include<Ticket, Edit>()
                .ForMember(dest => dest.Priority, opt => opt.MapFrom(src => src.Priority.Code))
                .ForMember(dest => dest.TicketID, opt => opt.MapFrom(src => src.ID))
                .ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.StatusCode))
                .ForMember(dest => dest.Category, opt => opt.MapFrom(src => src.ProblemCategoryCode))
                .ForMember(dest => dest.crmBusCode, opt => opt.MapFrom(src => src.Company.crmBusCode))
                .ForMember(dest => dest.TeamMembers, opt => opt.MapFrom(src => src.Schedules.Where(s => s.CompleteTime == null)));

            Mapper.CreateMap<Ticket, Update>()
                .ForMember(m => m.Schedules, opt => opt.MapFrom(t => t.Schedules.Where(s => s.EmployeeID == Util.CurrentUserID() && s.CompleteTime == null)));

            Mapper.CreateMap<Ticket, Edit>();

然后,如果我 Mapper.Map(ticket) 任何使用 MapFrom 的属性没有得到评估,它们最终只会得到没有设置映射时所拥有的值。

那么这里出了什么问题呢?


如果您不想打电话,作为替代解决方案Mapper.Map两次。您可以移动以下公共映射Detail进入扩展方法:

public static class MappingExtensions
{
    public static IMappingExpression<Ticket, TDest> MapDetailProperties<TDest>(
         this IMappingExpression<Ticket, TDest> mapBase) where TDest : Detail
    {
        return mapBase
            .ForMember(dest => dest.Priority, 
                opt => opt.MapFrom(src => src.Priority.Code))
             ///....
            .ForMember(dest => dest.TeamMembers, 
               opt => opt.MapFrom(src => src
                   .Schedules.Where(s => s.CompleteTime == null)));
    }
}

然后在注册时使用该扩展方法Ticket -> Update and Ticket -> Edit映射器:

Mapper.CreateMap<Ticket, Update>()
    .MapDetailProperties()
    .ForMember(m => m.Schedules, opt => opt.MapFrom(t => t.Schedules
        .Where(s => s.EmployeeID == Util.CurrentUserID() && 
            s.CompleteTime == null)));

Mapper.CreateMap<Ticket, Edit>()
    .MapDetailProperties();

然后就可以正常使用Map了:

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

我是否正确使用了 Automapper 2.0 的 Include 功能? 的相关文章

  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • 用于代数简化和求解的 C# 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 网络上有很多代数求解器和简化器 例如 algebra com 上不错的代数求解器和简化器 然而 我正在
  • 如何将 protobuf-net 与不可变值类型一起使用?

    假设我有一个像这样的不可变值类型 Serializable DataContract public struct MyValueType ISerializable private readonly int x private readon
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 对绑定到 DataTable 的 GridView 进行排序

    我有一个存储库 其中包含我正在处理的这个项目的所有 LINQ 查询 我能够将 LINQ 结果获取到 DataTable 并将其绑定到 gridview 以显示数据 现在我需要使 gridview 可排序 我已经设定AllowSorting
  • 如何确定 Git 中合并提交的第一个父级

    我正在阅读有关使用的差异 vs git 中的运算符 我遇到了这个问题Git 中的 HEAD 和 HEAD 有什么区别 https stackoverflow com q 2221658 2498327 在谷歌搜索后 我在网上找不到一个很好的
  • 当我有触摸事件处理程序时,为什么我的鼠标事件处理程序不工作?

    我的一些最终用户拥有触摸屏 其他用户则拥有 PC 在触摸屏上 PreviewMouseUp Down与触摸事件处理程序一起触发 导致重复行为 在 PreviewMousUp Down 中编写的函数被执行两次 所以我的示例按钮 XAML
  • 当涉及两个输入时,jQuery 模糊不断触发

    我在 Google 和 Stack Overflow 上搜索了一段时间 但找不到与此相关的任何内容 我有多个输入文本字段 当模糊时 它们会向服务器调用 jQuery AJAX 函数 它几乎可以完美地工作 问题是 如果我专注于一个文本输入 然
  • 为什么 Set 与 Proxy 不兼容?

    JavaScriptSet https developer mozilla org en docs Web JavaScript Reference Global Objects Set似乎与 JavaScript 完全不兼容proxies
  • Pymongo 连接远程机器超时

    我有一个在 AWS EC2 上运行的 Bitnami MEAN 堆栈 我正在尝试使用 PyMongo 从远程计算机进行连接 from pymongo import MongoClient conn MongoClient mongodb u
  • Automapper:忽略条件

    是否可以根据源属性的值忽略映射成员 例如 如果我们有 public class Car public int Id get set public string Code get set public class CarViewModel p
  • 可以要求我的事件处理程序立即返回吗?

    我正在编写一个 NET 库 其中一个类包含库用户需要订阅的事件 是否可以要求这些事件的处理程序的实现快速返回 或者这是一个有共同解决方案的常见问题吗 如果处理程序花费很长时间 这不会是致命的 但如果处理程序花费的时间超过大约半秒 事情就会开
  • Angular 5 - 添加动态路由但不路由

    我创建了一个新项目 并向路由模块添加了一些代码以进行动态路由 路由模块代码如下 import NgModule from angular core import Routes RouterModule Router from angular
  • SSRS 和 PowerShell:获取 Excel 格式的报告

    我正在尝试让 PowerShell 向我们的 SSRS 服务器发送 Web 请求并捕获结果 我已经使用了撞墙rs FORMAT EXCELSSRS url 字符串中的参数 我有以下内容 首先 初始化凭据 User MYDOMAIN MyUs
  • jquery 插件在其他公共函数中调用公共函数

    我定义了我的插件基于http docs jquery com Plugins Authoring http docs jquery com Plugins Authoring function var methods init functi
  • 使用 httplib 进行不完整读取

    我在从特定网站获取 RSS 提要时一直遇到问题 我最终编写了一个相当丑陋的程序来执行此功能 但我很好奇为什么会发生这种情况以及是否有更高级别的接口正确处理此问题 这个问题并不是真正的问题 因为我不需要经常检索提要 我已经阅读了一个捕获异常并
  • AngularJS Protractor E2E 模拟

    我有一个 Angular SPA 从节点后端检索其数据 由于节点项目完全覆盖了测试 我想模拟 Angular HTTP 调用 我不想开始讨论一般的功能 冒烟测试 谢谢 我想要的是 像这样 Api injector get Api sinon
  • 按位 XOR(异或)是什么意思?

    我试图理解 C 或一般情况下的二元运算符 特别是 异或 http msdn microsoft com en us library zkacc7k1 aspx 例如 给定一个正整数数组 除了一个出现奇数次的数字外 所有数字都出现偶数次 在
  • nodejs socket.io 在函数循环内发出

    我想通过循环内的 socket io 发出 为此 我制作了一个运行良好的触发器 但在每个触发器中我调用 socket emit 并且只有第一个发出有效 这是服务器代码 var server require http createServer
  • 从动态 PHP 页面生成 HTML 静态页面 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个脚本来在运行时从动态内容生成静态 HTML 页面 我基本上想做的就是保存那些缓存那些ht
  • 用于提取 HTML 图像属性的正则表达式

    我需要一个正则表达式模式来提取图像标签的所有属性 众所周知 存在大量格式错误的 HTML 因此该模式必须涵盖这些可能性 我正在看这个解决方案https stackoverflow com questions 138313 how to ex
  • 用于乐观更新的操作存储是 Redux/Flux 中的一个好方法吗?

    我一直在 React Flux 应用程序中进行乐观更新 并看到了两件事 如果用户在存在某些未完成的操作时尝试关闭窗口 会发生什么情况 例如 在 Facebook 中 即使没有真正持久化 消息也会出现在墙上 这就是乐观更新的作用 对用户来说是
  • flag_shih_tzu 可以处理的最大标志数量是多少?

    我正在使用 flag shih tzu gem 我想知道它可以处理的最大标志数量是多少 或者它是否取决于 int 标志列中的长度 我需要它来处理 64 个标志 can it 我是 flag shih tzu 的维护者 最佳实践 出于性能原因
  • 我是否正确使用了 Automapper 2.0 的 Include 功能?

    要么我没有 要么它不起作用 我有一个 Source 类 我想将其映射到彼此继承的多个视图 基本上 基类是 Detail 子类是 Edit 或 Update 它们使用与 Detail 相同的所有数据 再加上几个其他字段来管理自己的列表或其他内