2014-03-19 14 views
1

在域驱动设计中,我遇到以下情况。在域中建模查找值

我有车型。该车辆可以是掀背式汽车,SedanCar,卡车等类型。

VehicleType存储在数据库查找表中。

问题是:

如何为域建模?

我是否模型,可以像下面这样:

public class Vehicle 
{ 
    public int VehicleId{Get;Set;} 
    **public int VehicleTypeId { get; set; }** 
    public string MakeCode { get; set; } 
    public string ModelCode { get; set; } 
    public int Power { get; set; } 
    public int Weight { get; set; } 
    public int PowerToWeight { get { return Power/Weight*100; } }  

} 

OR

public class Vehicle 
{ 
    public int VehicleId{Get;Set;} 
    **public VehicleType VehicleType { get; set; }** 
    public string MakeCode { get; set; } 
    public string ModelCode { get; set; } 
    public int Power { get; set; } 
    public int Weight { get; set; } 
    public int PowerToWeight { get { return Power/Weight*100; } }  

} 

public class VehicleType 
{ 
    public int VehicleTypeId{Get;Set;} 
    public string Description{Get;Set;} 

} 

如果我使用的第2方式,在什么阶段我填充VehicleType模型。

谢谢。

回答

1
If I use the 2nd way, at what stage do I populate the VehicleType model. 

对于这两种方式,当您创建“车辆”,无论是VehicleTypeIdVehicleType的新实例VehicleType应设置。

  1. 如果Vehicle指的是VehicleTypeId那么您设置指定的标识符。
  2. 如果Vehicle指的是VehicleType那么您设置了VehicleType的实例。首先需要加载具有指定标识符的VehicleType的实例

通常我使用第二种方法,因为它使用实体及其关系来描述领域模型。

0

难道你不能使用枚举为VehicleType而不是使用ID? 然后,您的模型可以包含枚举,之后可以将其映射到数据库ID。 我认为你需要在下拉菜单或类似的东西中显示它们的描述? 这使得我认为VehicleType类是一个单独的阅读模型的好候选。