我有域模型和数据模型:
我想映射DoM<> DaM双向。我试过Automapper,但是我遇到了一个大问题,比如说DaM数据模型有一个实体Car,它是数据库表的直接翻译
Car
{
Type {get; set;}
MaxSpeed {get; set;}
}
域模型DoM具有以下结构:
Car
{
MaxSpeed {get; set;}
}
SportsCar : Car
{
}
F1 : SportsCar
{
}
映射应该是:
if (DaM.Car(car).Type == Type.SportsCar)
DaM.Car.MaxSpeed > 350 ? map DaM.car to DoM.F1 : map DaM.car to DoM.SportsCar
存档的最佳方式/工具是什么?
如何使用automapper或valueinject进行操作?
答案 0 :(得分:2)
您是否使用Entity Framework查看了Table Per Hierarchy映射?使用Car上的Type属性作为鉴别器,您可以将SportsCar和F1实体添加到数据模型中,Entity Framework将直接从数据库中检索它们。如果您真的想在域模型中使用单独的SportsCar和F1类,则可以使用AutoMapper。
答案 1 :(得分:1)
valueinjecter将匹配源和目标之间相同名称和类型的所有属性,而不管类型如何 所以它会是这样的:
a.InjectFrom(b);
注意a和b已经存在,您需要提前创建
你可以在这里看到mvc项目中与EF一起使用的valueinjecter:http://prodinner.codeplex.com