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、删除两个位置、修改一个和添加一个。

现在我想将更改交付给服务器。据我了解 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