我已经阅读了几篇关于一堆 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 无关。由于某些原因,我不想/不能在当前项目中使用它们。
非常感谢您分享您的经验。