注文をモデル化する場合、注文行に製品のプロパティがあると役立ちますか、それとも製品名だけが必要ですか?
オーダー:
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
確かに、ドメイン モデルに存在する関係を持つことは役に立ちます。したがって、注文から注文ラインにアクセスし、各行の製品にアクセスして、製品のすべてのプロパティにアクセスできます。しかし、オーダーラインには価格と数量のプロパティがあるため、この製品への依存は、役立つどころか害を及ぼすようです。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;}
}