错误时数据合同构件指彼此

问题描述:

我有一个简单的数据契约,其是具有相互引用的数据成员,这里是数据成员:错误时数据合同构件指彼此

[DataContract(Namespace = "", Name = "ScaleTransactionHeaderMessage")] 
public class ScaleTransactionHeaderMessage 
{ 
    [DataMember] 
    public int ScaleTransactionHeaderMessageId { get; set; } 

    [DataMember] 
    public string OperatorName { get; set; } 

    [DataMember] 
    public string Shift { get; set; } 

    [DataMember] 
    public string Source { get; set; } 

    [DataMember] 
    public string Destination { get; set; } 

    **[DataMember] 
    public List<ScaleTransactionDetailMessage> ScaleTransactionDetailMessages { get; set; }** 

} 

[DataContract(Namespace = "", Name = "ScaleTransactionDetailMessage")] 
public class ScaleTransactionDetailMessage 
{ 

    [DataMember] 
    public int ScaleTransactionDetailMessageId { get; set; } 

    [DataMember] 
    public double Tonnage { get; set; } 

    [DataMember] 
    public DateTime TransactionDetailDate { get; set; } 

    **[DataMember] 
    public ScaleTransactionHeaderMessage scaleTransactionHeaderMessage { get; set; }** 

} 

这里是操作引起问题

 private static ScaleTransactionDetailMessage ConvertTransactionDetail(ScaleTransactionHeaderMessage headerMessage, ScaleTransactionDetail transactionDetail) 
    { 
     ScaleTransactionDetailMessage detailMessage = new ScaleTransactionDetailMessage 
     { 
      Tonnage = transactionDetail.Tonnage, 
      TransactionDetailDate = transactionDetail.TransactionDetailDate, 
      ScaleTransactionDetailMessageId = transactionDetail.TransactionDetailId, 
      //TODO: Check why this is not working 
      **scaleTransactionHeaderMessage = headerMessage** 
     }; 
     return detailMessage; 
    } 

的问题是每次我在ScaleTransactionDetailMessage数据合同,我总是得到一个错误提的连接超时加ScaleTransactionHeaderMessage时间,我敢肯定,这是不是配置问题,因为如果我没有价值添加到ScaleTransactionHeaderMessage我在运营合同中,服务可以正常运行。

我有单元测试操作,它工作正常,问题只在调用服务时出现。

数据合同设计中是否有错误?

您需要添加IsReference = trueDataContract

[DataContract(IsReference=true] 

看看here

+0

哇,这是快速和正确的...谢谢 – 2015-02-09 16:53:31