我有领域模型和数据模型:
- 领域模型 (DoM) 专为业务层设计,以简化操作。
- 使用 Entity Framework 从数据库自动生成数据模型 (DaM)。
我想在两个方向上映射 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 来做到这一点?
请您参考如下方法:
您是否使用 Entity Framework 研究过 Table Per Hierarchy 映射?使用 Car 上的 Type 属性作为鉴别器,您可以将 SportsCar 和 F1 实体添加到数据模型, Entity Framework 将直接从数据库中检索它们。如果您真的想在您的领域模型中拥有单独的 SportsCar 和 F1 类,那么您可以使用 AutoMapper。
