2008-09-18 84 views
2

在我們的項目中,我們有一個標準的自動生成的designer.cs文件,鏈接到一個DBML文件,其中包含映射到我們數據庫表的所有對象類。編輯WCF服務的自動生成的DMBL文件

我們希望直接通過WCF服務傳遞這些對象,因此他們需要在適當的時候使用[DataContract]和[DataMember]屬性進行裝飾。這樣做的最佳方法是什麼,以便在更改數據庫方案或其他更改後重新生成designer.cs文件時,更改不會被擦除。

部分類是一種選擇,但如果我想將DataMember屬性來裝飾財產是自動生成的designer.cs文件已經定義,那麼我可以在同一個屬性定義不會增加局部類,因爲這意味着財產將被定義兩次。

回答

0

dbml文件給出了部分類,因此您可以創建一個新的.cs文件,定義要擴展的部分類,然後使用所需的屬性對其進行修飾。例如,如果你有一個看起來像

public partial class MyDataContext : System.Data.Linq.DataContext 
{ 
... 
} 

您可以定義在一個單獨的cs文件以下生成的數據上下文:

[DataContract] 
public partial class MyDataContext 
{ 
... 
} 

這種方式可以擴展生成的類,而不必擔心他們當您的dbml文件被重新生成時被覆蓋。

3

將DBML序列化模式設置爲單向會修飾具有必需屬性的類和若干成員,但它會忽略某些關聯以避免在SP1之前出現問題的循環引用。

如果你想那些過於看看我LINQ to SQL T4 template,可提供全兼容SP1的屬性DataContract(取消註釋在DataClasses.tt文件中的行data.SerializationMode = DataContractSP1),以及讓你自定義DBML的任何其他部分爲C# /VB.NET代碼生成過程。