在域驱动设计中,我有以下情况。
我有一个车型。车辆可以是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模型。
感谢。
答案 0 :(得分:1)
If I use the 2nd way, at what stage do I populate the VehicleType model.
对于这两种方式,{...}}应该在您创建' Vehicle' 的新实例时设置VehicleType
或VehicleTypeId
。
VehicleType
引用Vehicle
,则设置指定的标识符。VehicleTypeId
引用Vehicle
,则您设置VehicleType
的实例。首先,需要加载具有指定标识符VehicleType
实例
醇>
通常我使用第二种方法,因为它根据实体及其关系来描述域模型。
答案 1 :(得分:0)
您是否可以使用VehicleType
的枚举而不是使用ID?
然后,您的模型可以包含枚举,之后可以映射到数据库ID。
我假设你需要在下拉列表中显示它们的描述或类似的东西?
这使得VehicleType
类成为我猜的单独阅读模型的良好候选者。