gpt4 book ai didi

c# - Automapper 不从包含单个可为空 bool 字段的源进行映射

转载 作者:行者123 更新时间:2023-11-30 15:56:29 27 4
gpt4 key购买 nike

当从具有单个 Nullable<bool> 的对象映射时,我在 Automapper 中看到了一些非常奇怪的行为属性(property)。我目前是这样设置的:

public class MyViewModel
{
public bool? IsAThing { get; set; }
}

public class MyEntity
{
public bool? IsAThing { get; set; }

public bool? HasAnotherThing { get; set; }

public string AnotherThing { get; set; }

// Lots of other fields
}

具有以下映射配置文件(具有类似的反向映射):

CreateMap<MyViewModel, MyEntity>()
.ForMember(x => x.IsAThing, opt => opt.MapFrom(y => y.IsAThing))
.ForAllOtherMembers(opt => opt.Ignore());

但是,如果我尝试执行以下操作:

var config = new AutoMapperConfig().Configure();
var mapper = config.CreateMapper();

var source = new MyViewModel { IsAThing = true };
var dest = new MyEntity();

mapper.Map(source, dest);

dest.IsAThing一片空白。映射配置文件是唯一 MyViewModel 的地方被声明为映射源。奇怪的是,如果我声明这个类

public class AnotherThingViewModel
{
public bool? HasAnotherThing { get; set; }
public string AnotherThing { get; set; }
}

然后做下面的测试:

var source = new AnotherThingViewModel { HasAnotherThing = true };
var dest = new MyEntity();
mapper.Map(source, dest);

dest.HasAnotherThingtrue不出所料!

显然我不知道这里发生了什么,所以有没有人以前见过这样的事情,或者知道 Automapper 中的任何错误可能会导致这种情况?

最佳答案

我想通了,我有 CreateMap<MyViewModel, MyEntity>().ForAllMembers(opt => opt.Ignore())在我的映射配置中的其他地方!

关于c# - Automapper 不从包含单个可为空 bool 字段的源进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46731989/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com