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