从数据库中删除订单

时间:2013-05-14 07:24:46

标签: wcf datacontract datamember

在将参数从xml传递到WCF服务时,有什么可用于避免在DataMember中使用Order属性

[DataMember(Name = "Name", Order = 2)]
...
[DataMember(Name = "ID", Order = 1)]
...

1 个答案:

答案 0 :(得分:2)

如果您按照与序列化程序所期望的顺序不同的顺序传递成员,则无法避免使用Order DataMemberAttribute。

此处列出了订购规则:

http://msdn.microsoft.com/en-us/library/ms729813.aspx

  

数据排序的基本规则包括:

     
      
  • 如果数据协定类型是继承层次结构的一部分,则其基本类型的数据成员始终位于订单的第一位。
  •   
  • 接下来依次是当前类型的数据成员,它们没有DataMemberAttribute属性集的Order属性,   字母顺序。
  •   
  • 接下来是具有DataMemberAttribute属性集的Order属性的任何数据成员。这些是按值的顺序排序的   Order属性首先,然后按字母顺序排列,如果有多个   某个订单值的一个成员。订单值可能会被跳过。
  •   

如果您传递的成员不符合这些规则,那么您将获得空值,因为序列化程序将跳过它们。我知道它不是很好但不幸的是它的工作方式。