相关疑难解决方法(0)

如何在Automapper 6中映射期间忽略所有源成员的空值?

我一直在寻找各处:stackoverflow,automapper文档,互联网,只是找不到这个的任何信息,即使这似乎是一个非常普遍的问题.

我的映射:

CreateMap<StatusLevelDTO, StatusLevel>()
            .ForAllMembers(opt => opt.Condition(src => src != null));
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为src表示源对象(StatusLevelDTO),而不是源属性(我认为).

更具体地说,如果我将ObjectA映射到ObjectB,ObjectA.SomeValue为null而ObjectB.SomeValue为2,我希望目标对象保持其值(2).

我已经看到了这个问题:Automapper使用自定义解析器跳过空值并尝试了前两个答案,但它们似乎都已过时版本6.

有没有办法在Automapper 6中实现这一点?我准确地使用6.0.2.

c# mapping automapper

28
推荐指数
4
解决办法
2万
查看次数

AutoMapper.Map忽略源对象的所有Null值属性

我正在尝试映射2个相同类型的对象.我想要做的是AutoMapper to toigonore所有属性,它们Null在源对象中有值,并保留目标对象中的现有值.

我已经尝试在我的"存储库"中使用它,但它似乎不起作用.

Mapper.CreateMap<TEntity, TEntity>().ForAllMembers(p => p.Condition(c => !c.IsSourceValueNull));
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?

.net c# repository automapper

21
推荐指数
2
解决办法
2万
查看次数

使用AutoMapper更新现有域模型设置为NULL

我有下面的viewmodel,它与域模型相同(但包含一些额外的属性).

public class ProductViewModel
{
    public string Name { get; set; }
    public string ShortDescription { get; set; }
    public string FullDescription { get; set; }
    public string AdminComment { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

从上面看,我只在视图页面中使用了一些属性.

当我使用Automapper映射我现有的模型时,我的所有viewmodel字段都被映射到domainmodel字段.

Mapper.Map(productViewModel, product);
Run Code Online (Sandbox Code Playgroud)

由于上面的映射,所有未使用的viewmodel字段(默认情况下未使用的viewmodel字段具有NULL值)都映射到域模型.它用NULL值替换我现有的数据库数据.

有没有办法从映射中排除NULL和默认属性值?

笔记:

  • 我遇到了使用Automapper来更新现有的实体POCO
  • 如果我们对排除的属性使用隐藏字段,则将修复上述问题,因为viewmodel将使用隐藏字段来携带数据.但我不喜欢它!
  • 我尝试了以下不起作用的代码:

    Mapper.CreateMap<ProductViewModel, Product>()
          .ForAllMembers(opt =>
               opt.Condition(srs => (!srs.IsSourceValueNull || IsDefaultValue(srs.SourceValue, srs.SourceType))));
    
    Run Code Online (Sandbox Code Playgroud)

编辑:

尝试Automapper后,使用自定义解析器跳过空值(感谢abatishchev).我已经使用了解析器,但得到错误缺少类型映射配置或不支持的映射

我的代码片段:

...
public System.DateTime CreatedOnUtc { get; set; } …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework automapper

2
推荐指数
1
解决办法
1532
查看次数

标签 统计

automapper ×3

c# ×3

.net ×2

entity-framework ×1

mapping ×1

repository ×1