2008-09-25 69 views
2

在使用WCF服務與數據庫交互的n層應用程序中,在整個應用程序中使用LinqToSql類的最佳實踐方式是什麼?LinqToSql和WCF

我已經看到它做了幾種不同的方式,但他們似乎像燒了大量的小時創建額外的接口,消息類和類似的東西,從而不必編寫數據訪問代碼。

有沒有一種好的方法來做到這一點?我們是否堅持等待實體框架?

回答

2

LINQ to SQL並不適合與分佈式應用程序一起使用。更改跟蹤和延遲加載是與數據庫綁定的DataContext的一部分,因此無法通過線路傳輸。您可以跨線程移動L2S實體,修改它們,將它們移回並通過將它們重新附加到DataContext來更新數據庫,但這非常有限,您將失去所有併發檢查,因爲舊值始終不會被保留。

順便說一句,我相信L2E也是如此。

2

將linq-to-sql對象傳遞給分佈式系統的其他部分當然不是一個好主意。如果你這樣做,你會把你的客戶連接到數據庫的結構,這從來就不是一個好主意。這是DataSets的主要問題之一。

最好爲數據對象的傳輸創建自己的類。那些類當然會作爲DataContracts實現。在您的服務層中,您將在linq-to-sql對象和數據載體對象的實例之間進行轉換。它很乏味,但它將服務的客戶從數據庫模式中分離出來。它還具有讓您更好地控制系統中傳遞的數據的優勢。