【发布时间】:2013-03-29 19:10:06
【问题描述】:
在为 Order 建模时,在 Orderline 中有 Product 的属性是否有帮助,还是只需要 Product Name?
教团:
public class Order
{
public Guid Id {get; set;}
public DateTime OrderDate {get; set;}
public Decimal Total {get;set;}
}
订单线:
public class Orderline
{
public Guid Id {get; set;}
public Order Order {get; set;}
public Product Product {get; set;}
public int Quantity {get; set;}
public Decimal Price {get; set;}
}
如果我删除一个产品,它要么需要级联删除订单行和订单(这真的很糟糕),要么我 soft delete 并在产品上设置一个 IsDeleted 标志。
当然,在域模型中存在关系会很有帮助;因此,我可以从订单中访问它的 Orderlines,然后进入每行的产品并访问产品的所有属性。但是,由于 Orderline 具有价格属性,因此这种对产品的依赖似乎弊大于利。如果我更改 Orderline 使其只有产品名称(在下面的类中,我已将类型从 Product 更改为 String,那么我可以删除产品而不影响它的任何记录:
public class Orderline
{
public Guid Id {get; set;}
public Order Order {get; set;}
public string Product {get; set;}
public int Quantity {get; set;}
public Decimal Price {get; set;}
}
【问题讨论】:
标签: database-design domain-model