实体框架代码首先,DTO和n层方案(WCF)

时间:2012-09-06 12:39:20

标签: c# wcf entity-framework ef-code-first n-tier-architecture

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

非常感谢您分享您的体验。

0 个答案:

没有答案