2010-09-15 84 views
1

已將SQL數據庫中的表映射到Employee dbml文件中的linq。數據成員訂單從wcf客戶端代理生成的類中丟失

[global::System.Runtime.Serialization.DataContractAttribute()] 
public partial class tbEmployee 
{ 

    private int _Employeeid; 

    private string _EmployeeName; 



    public tbEmployee() 
    { 
    } 

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Employeeid", DbType = "Int NOT NULL")] 
    [global::System.Runtime.Serialization.DataMemberAttribute(Order = 0)] 
    public int EmployeeID 
    { 
     get 
     { 
      return this._PeriodContextRefId; 
     } 
     set 
     { 
      if ((this._Employeeid != value)) 
      { 
       this._Employeeid = value; 
      } 
     } 
    } 

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_EmployeeName", DbType = "NVarChar(2) NOT NULL", CanBeNull = false)] 
    [global::System.Runtime.Serialization.DataMemberAttribute(Order = 1)] 
    public string EmployeeName 
    { 
     get 
     { 
      return this._EmployeeName; 
     } 
     set 
     { 
      if ((this._EmployeeName != value)) 
      { 
       this._EmployeeName = value; 
      } 
     } 
    } 

} 

和服務我只是返回類型

List<tbEmployee> 

的對象時,我加入我的客戶服務參考日期會員訂單信息跳過。

因爲我使用protobuf-net進行序列化/反序列化,所以在我的客戶端進行反序列化時,它給出了問題 。

回答

0

是的,這是一個滋擾。有2個選項可以解決這個問題;第一個(也是最簡單的)是使用WCF在客戶端和服務器之間共享合同組件的能力。如果你可以共享DTO層,這將保持簡單。

第二種方法是在客戶端添加額外的標記以提供線索。您可以在一個單獨的代碼文件通過partial類做到這一點,例如(不要編輯生成的文件):

namespace YourNamespace { 
    [ProtoContract(DataMemberOffset = 1)] /* shift all DataMember orders */ 
    public partial class tbEmployee {} 
} 

一個更明確的選擇是:

namespace YourNamespace { 
    [ProtoPartialMember(1, "EmployeeID")] 
    [ProtoPartialMember(2, "EmployeeName")] 
    public partial class tbEmployee {} 
} 
+0

感謝馬克爲迴應。其實我可能有很多像這樣的對象。基本上,我序列化,然後壓縮到字節數組,然後在silverlight客戶端發送。 正如你所建議的第一個選項意味着你希望我在客戶端(DTO trasnfer對象)共享dbml設計器類,如果可以請給我一些例子,因爲我不知道這種技術。 – 2010-09-17 05:36:41

+0

啊,如果你在客戶端/服務器(即Silverlight)有不同的平臺,那麼共享程序集可能不是一個選項。但共享*類文件*可能*是*選項...?那麼你的WCF只是暴露了byte [] API並且沒有code-gen類?但是,如果服務器代碼也是由LINQ-to-SQL生成的,那麼這不是一個好的選擇 – 2010-09-17 06:33:52

相關問題