首页
视频
资源
登录
转
如果对象为空,如何将 Automapper 9 配置为忽略对象属性,但如果不为空则映射
3198
人阅读
2022/11/5 12:12
总访问:
508215
评论:
0
收藏:
0
手机
分类:
.net core
### 问题描述 我尝试了很多,但找不到我真正要找的东西.这是我的情况:我有一个带有导航属性和视图模型的 EF-Core 实体: ``` public class SomeEntity { public Guid Id { get; set; } public virtual NestedObject NestedObject { get; set; } public DateTime Created { get; set; } public DateTime Modified { get; set; } } public class SomeEntityViewModel { public Guid Id { get; set; } public string NestedObjectStringValue { get; set; } public int NestedValueIntValue { get; set; } } ``` 这是我的 CreateMap,即使没有设置 NestedObject-Property,它也会创建一个新的 NestedObject(条件似乎在这里不适用): ``` CreateMap<SomeEntityViewModel, SomeEntity>(MemberList.Source) .ForPath(m => m.NestedObject.StringValue, opt => { opt.Condition(s => s.Destination.NestedObject != null); opt.MapFrom(m => m.NestedObjectStringValue); }); ``` 如果属性为空,则避免创建新的 NestedObject,但如果不是,则不会映射 NestedObject 属性: ``` CreateMap<SomeEntityViewModel, SomeEntity>(MemberList.Source) .ForMember(m => m.NestedObject, opt => opt.AllowNull()); ``` 如果设置了第二个 CreateMap,则不会映射 NestedObject-Properties,如果未设置 Properties,则首先创建一个新的 NestedObject.但两者都不起作用.任何想法如何解决这个问题? ### 推荐答案 移除 ReverseMap() ,然后尝试使用 AutoMapper 条件映射 并使用 ForPath 而不是 ForMember 嵌套子对象属性: ``` CreateMap<SomeEntityViewModel, SomeEntity>() .ForPath( m => m.NestedObject.StringValue, opt => { opt.Condition( s => s.DestinationMember != null && s.DestinationMember != "" ); opt.MapFrom(s => s.NestedObjectStringValue); } ); ``` 同IntValue. ### 更新 因此,如果 NestedObject 为空,您不想将 SomeEntityViewModel 中的值映射到它.如果 NestedObject 不为空,则映射有效. 请参考下面使用AfterMap ``` CreateMap<SomeEntityViewModel, SomeEntity>() .ForMember(q => q.NestedObject, option => option.Ignore()) .AfterMap((src, dst) => { if(dst.NestedObject != null) { dst.NestedObject.StringValue = src.NestedObjectStringValue; } }); ``` 原文:https://www.it1352.com/2598455.html
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
只若初见
如果有缘,错过了还会重来,如果无缘,相遇了也会离开
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
架构
9篇
后端
3篇
.net
8篇
前端
52篇
nginx
1篇
.net core
6篇
EF
5篇
随笔
8篇
数据库
9篇
k8s
0篇
consul
1篇
git
1篇
uniapp
3篇
mysql
1篇
linux
1篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术