1

一連の EF と DTO に関する記事をいくつか読みましたが、WCF を使用した n 層のシナリオで EF Code First と DTO を使用する方法について明確にする必要があります。

これらのクラスを見てみましょう:

public class Order
{
  public int Id { get; set; }
  public DateTime ShipDate { get; set; }
  public ObservableCollection<OrderDetail> Details { get; private set; }  
}

public class OrderDetail
{
  public int Id { get; set; }
  public int OrderId { get; set; }
  public int ProductId { get; set; }
  public decimal Quantity { get; set; }
}

ユーザーが既存の注文を編集したい場合、私のクライアント アプリケーション (WPF MVVM アプリ) は DTO を要求し、それをOrderインスタンスに変換します。次に、ユーザーは UI を介していくつかの変更を順番に行います。たとえば、変更ShipDate、2 つの位置の削除、1 つの変更、1 つの追加などです。

次に、サーバーに変更を配信したいと思います。DTO の概念を理解している限り、変更に関する情報を含む DTO タイプを作成する必要があります。

[DataContract]
public class UpdateOrderDTO
{
  [DataMember]
  public DateTime ShipDate { get; set; }
  [DataMember]
  public Collection<OrderDetail> NewDetails { get; private set; }
  [DataMember]
  public Collection<OrderDetail> ModifiedDetails { get; private set; }
  [DataMember]
  public Collection<OrderDetail> DeletedDetails { get; private set; }
}

しかし、いつ、どこでこの DTO を作成すればよいのでしょうか? Orderつまり、変更を送信しても作成できません。クラス には変更追跡情報がありません。

このオブジェクトはOrder、ユーザーが編集を要求した後に一緒に作成する必要があるようです。これにより、変更を追跡できます...私は間違っていますか?

質問はSTEに関するものではないことに注意してください。何らかの理由で、現在のプロジェクトでそれらを使用したくない/使用できません。

あなたの経験を共有してくれてありがとう。

4

0 に答える 0