5

我定义了以下类:

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.asaxApplication_Start().

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

最后,在我的一个控制器中,我有以下代码:

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

我第一次在控制器上调用 Action 并运行此映射时,一切正常,并且InstrumentNumber正确映射到InstrumentNo对象的Clerk。但是,第二次调用 Action 时,InstrumentNo不会映射。 InstrumentNumber肯定有一个值,但InstrumentNo仍然为空。

有什么想法可能在这里发生吗?

4

1 回答 1

1

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

于 2013-01-21T14:39:00.860 回答