gpt4 book ai didi

c# - Automapper 在第一次调用时正确映射,但在第二次调用时跳过属性

转载 作者:太空狗 更新时间:2023-10-29 23:46:51 24 4
gpt4 key购买 nike

我定义了以下类:

public class ImageIndexModel {
public string Description {get; set;}
public string InstrumentNumber {get; set;}
}

public class ImageEditModel : ImageIndexModel {
public int TotalCount = 0;
}

public class Clerk { //This is actually a class defined by LinqToSql
public string Description {get; set;}
public string InstrumentNo {get; set;}
}

现在,在我的 global.asax 中,我在 Application_Start() 中定义了以下映射。

Mapper.CreateMap<ImageIndexModel, Clerk>()
.ForMember(dest => dest.InstrumentNo,
opt => opt.MapFrom(src => src.InstrumentNumber));

最后,在我的一个 Controller 中,我有以下代码:

var _existing = new Clerk();
var _default = new ImageEditModel() {
InstrumentNumber = "12345678", Description = "Test"
};
Mapper.Map(_default, _existing);

我第一次在 Controller 上调用 Action 并运行此映射时,一切正常,InstrumentNumber 正确映射到 InstrumentNo职员 对象。但是,第二次调用 Action 时,InstrumentNo 没有被映射。 InstrumentNumber 确实有一个值,但 InstrumentNo 仍然为空。

知道这里会发生什么吗?

最佳答案

我曾经遇到过相反的问题,发生了太多的映射。通过调用 mapper.reset() 解决了这个问题 here for potentially other reasons .也许您的应用程序中的其他东西正在从您的下方重置您的映射器,以便它不再解析您认为应该解析的映射(并且会在短时间内解析)?另一个问题的关键是 Automapper 是单例的,因此您的代码的另一部分可以在您不知情的情况下加载或延迟绑定(bind)并弄乱它。

关于c# - Automapper 在第一次调用时正确映射,但在第二次调用时跳过属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14267390/

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