2009-04-17 83 views
2

我正在使用LINQ到SQL來進行數據庫抽象的Web服務。當客戶使用我們的Web服務時,對象被序列化爲XML,並且都是漂亮的。傳輸LINQ數據對象

現在我們希望開發自己的使用本地數據類型的客戶端,因爲沒有理由執行objects-> xml-> objects。但是,從我所瞭解的您不能傳輸LINQ對象,因爲它們直接映射到數據庫,因此數據是「實時」的。

我的問題是,是否有一種方法可以對您提取的數據進行「快照」,將LINQ對象設置爲「脫機」,然後將其傳輸。數據在傳輸到客戶端後不會發生變化,我們也不需要訪問數據庫。

回答

2

的LINQ到SQL類可以用DataContractSerializer使用(爲WCF)很容易(你需要儘管)在設計器中啓用序列化屬性)。有了這個,您應該能夠與客戶端共享數據彙編。只要你不使用數據上下文,對象本身應該表現良好(只是斷開連接 - 所以不需要延遲加載)。

訣竅是您需要在序列化代碼中重新使用這些類型(來自現有程序集)。如果您使用的是WCF,則可以使用svcutil /r或通過IDE進行此操作。

儘管如此,爲這些場景維護單獨的DTO類通常更清潔。但我偶爾會犯上述做法。