一連の 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に関するものではないことに注意してください。何らかの理由で、現在のプロジェクトでそれらを使用したくない/使用できません。
あなたの経験を共有してくれてありがとう。