域模型映射
本文关键字:映射 模型 | 更新日期: 2023-09-27 18:33:45
我有域模型和数据模型:
- 域模型 (DoM) 专为业务层设计,以简化操作。
- 数据模型 (DaM) 是使用实体框架从数据库自动生成的。
我想在两个方向上映射 DoM <> DaM。我试过自动映射器,但我遇到了一个大问题,比如 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
存档的最佳方法/工具是什么?
如何使用自动映射器或值注入来做到这一点?
您是否使用实体框架查看了每个层次结构的表映射?使用 Car 上的 Type 属性作为鉴别器,可以将 SportsCar 和 F1 实体添加到数据模型,实体框架将直接从数据库中检索它们。然后,如果您确实希望在域模型中拥有单独的跑车和 F1 类,则可以使用 AutoMapper。
http://weblogs.asp.net/manavi/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph
默认情况下,
值注入器将匹配从源到目标的所有相同名称和类型的属性,无论类型如何所以它会是这样的:
a.InjectFrom(b);
注意 A 和 B 已经存在,您提前创建它们
您可以在此处查看 MVC 项目中与 EF 一起使用的值注入器:http://prodinner.codeplex.com