Skip to main content
 首页 » 编程设计

c#之领域模型映射

2024年08月06日31Leo_wl

我有领域模型和数据模型:

  • 领域模型 (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。

http://weblogs.asp.net/manavi/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph