在域中建模查找值

时间:2014-03-19 08:05:41

标签: domain-driven-design lookup domain-model

在域驱动设计中,我有以下情况。

我有一个车型。车辆可以是HatchbackCar,SedanCar,Truck等。

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; } }     

}

AND

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

}

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

对于这两种方式,{...}}应该在您创建' Vehicle' 的新实例时设置VehicleTypeVehicleTypeId

  1. 如果VehicleType引用Vehicle,则设置指定的标识符。
  2. 如果VehicleTypeId引用Vehicle,则您设置VehicleType的实例。首先,需要加载具有指定标识符
  3. VehicleType实例

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

答案 1 :(得分:0)

您是否可以使用VehicleType的枚举而不是使用ID? 然后,您的模型可以包含枚举,之后可以映射到数据库ID。 我假设你需要在下拉列表中显示它们的描述或类似的东西? 这使得VehicleType类成为我猜的单独阅读模型的良好候选者。