【问题标题】:Strangest LINQ to SQL case I have ever seen我见过的最奇怪的 LINQ to SQL 案例
【发布时间】:2010-05-28 10:05:35
【问题描述】:

好的,这是我见过的 .net 编程中最奇怪的问题。似乎对象字段在 .net Web 服务中按照字段初始化的顺序进行序列化。

这一切都始于 Flex 不接受来自 .net Web 服务的 SOAP 响应。我发现这是由于序列化字段的顺序正在满足声明的可序列化类中的字段顺序。

它与通用列表和 LINQ to SQL 有关,但我不知道是什么。这个真的很难复制。

获取想法的示例:

[Serializable] 
public class SomeSample 
{ 
    public int A; 
    public int B; 
    public int C; 
} 

我正在使用 linq 查询 asmx Web 服务中的一些数据表并返回 SomeSample 对象列表:

var r = (from ...... select new SomeSample { A = 1, C = 3 }).ToList(); 

现在列表再次被迭代,并且 B 字段被应用了一些值(例如 2)。

然而,退回的肥皂信封包含以下摘录:

<A>1</A><C>3</C><B>2</B> 

请注意序列化的顺序。如果我最初初始化了所有字段:

var r = (from ...... select new SomeSample { A = 1, B = 2, C = 3 }).ToList(); 

对象已按正确顺序序列化。

我必须补充一点,在这两种情况下,调试器显示的“r”变量的内容完全相同。

我是疯了还是这是正常行为?

提前致谢。

【问题讨论】:

  • 第二次迭代过程是什么样的?
  • 元:您可能应该坚持一个帐户,而不是每个帖子一个...

标签: sql linq serialization


【解决方案1】:

我认为你不应该依赖序列化顺序。实际上正确的反序列化并不重要。

【讨论】:

    【解决方案2】:

    是的。 :-( 至少对于 Flex SDK 3.6.0.x 中 SOAP 反序列化器的元素。

    【讨论】:

      【解决方案3】:

      我在上一篇文章中的意思是——无论 SOAP/WSDL 规范是否可以——Flex SDK 都期望

      <sequence>
      

      按 WSDL 中定义的顺序提供子元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-03
        相关资源
        最近更新 更多