【发布时间】:2013-01-10 21:15:25
【问题描述】:
我定义了以下类:
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));
最后,在我的一个控制器中,我有以下代码:
var _existing = new Clerk();
var _default = new ImageEditModel() {
InstrumentNumber = "12345678", Description = "Test"
};
Mapper.Map(_default, _existing);
我第一次在控制器上调用 Action 并运行此映射时,一切正常,InstrumentNumber 正确映射到 Clerk 对象的 InstrumentNo。但是,第二次调用 Action 时,InstrumentNo 不会被映射。 InstrumentNumber 肯定有一个值,但 InstrumentNo 仍然为空。
您有什么想法吗?
【问题讨论】:
-
您在问题中输入的代码即使在多次运行时也能正常工作。所以 Automapper 似乎不是问题。我怀疑 Linq2SQL 生成的类或它在 ASP.NET 中的使用方式。没有更多的代码,很难说什么是错的。我会在 linq2sql 生成的类的属性设置器中设置断点。
标签: c# model-view-controller automapper