首页新闻找找看学习计划

C#AutoMapper赋值的问题

0
悬赏园豆:10 [待解决问题]

现有两个实体类

    public class One
    {
        public string Name;
        public string Sex;
    }

    public class Two
    {
        public string Name;
    }

配置映射two赋值给one

Mapper.Initialize(x => x.AddProfile<UserProfile>());
One one = new One { Name = "张三", Sex = "1" };
Two two = new Two { Name = "李四" };
one = Mapper.Map<Two, One>(two);

one中的Sex值会变为null,我想保留原始Sex的值,该怎么处理

屋檐不懂雨的主页 屋檐不懂雨 | 初学一级 | 园豆:92
提问于:2019-12-16 12:11
< >
分享
所有回答(3)
0

这个除非你再多建立一个字段去保存sex的值。 因为automapper是将A实体的属性映射到B实体(相同的字段)。

初夏的阳光丶 | 园豆:488 (菜鸟二级) | 2019-12-16 12:38

只能这样吗,这样使用起来会很不方便

支持(0) 反对(0) 屋檐不懂雨 | 园豆:92 (初学一级) | 2019-12-16 12:41

@屋檐不懂雨: 就你这个实例来说 将Two映射到One 中 你Two实体类中是没有Sex字段的。 所以映射之后 One的Sex肯定是为NULL的

支持(0) 反对(0) 初夏的阳光丶 | 园豆:488 (菜鸟二级) | 2019-12-16 12:43

@初夏的阳光丶: 关键我两个实体类的功能是不一样的,为了解决这个问题在Two中再加个字段有点将就

支持(0) 反对(0) 屋檐不懂雨 | 园豆:92 (初学一级) | 2019-12-16 12:44

@屋檐不懂雨: 那这里还是不建议用AutoMapper了 因为这个本意是讲两个大致相同的实体进行映射

支持(0) 反对(0) 初夏的阳光丶 | 园豆:488 (菜鸟二级) | 2019-12-16 12:45
0

我觉得 AutoMapper 就是在model 的基础上封装一下 不太多的暴露到表现层,解耦表现层与model的关系.... (自己理解)
参考了 这篇博客:
https://blog.csdn.net/wtf123654789/article/details/90445513

Cgrain | 园豆:471 (菜鸟二级) | 2019-12-16 13:13
0

这种应用方式看着好怪。通常 Mapper 用来方便的将某一个数据实体转化到另一个实体。
而你的需求是将 一个数据实体转化到一个 已存在 的实体且保留这个实体的即有数据。。

xiaogui340 | 园豆:309 (菜鸟二级) | 2019-12-18 09:55

mvvm中automapper保存全局配置的

支持(0) 反对(0) 屋檐不懂雨 | 园豆:92 (初学一级) | 2019-12-18 09:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册