2008-10-27 102 views
7

我剛開始使用LinqToSql創建我的數據訪問層。每個人都在談論酷語法,我真的很喜歡Linq。LinqToSql最佳實踐

但是當我看到你的類是如何在LinqContext上拖動一些表的時候產生的,我很驚訝:沒有人需要這麼多的代碼?!

因此,我查看了其他人如何使用LinqToSql,例如Rob Connery在他的StoreFront Demo中。

因爲我不喜歡所有這些代碼生成的方式,所以我創建了我的領域層,並使用生成的類作爲參考。有了這個解決方案,我很好,因爲我可以使用Linq提供的功能(延遲執行,延遲加載......),並且我的域圖層很容易理解。

你是如何使用LinqToSql的?

回答

6

創建的類不像看起來那麼沉重。當然,它需要很多代碼,但總的來說,它的功能與其提供的功能一樣輕巧。

我也用來創建自己的表,但現在我只是使用LINQtoSQL DataContext。爲什麼?創建更簡單,功能更好,互操作性更好,甚至可能比我自己的東西更快(不是每個方面都是如此)。通常我自己的東西在一件事情上非常快,但其他東西中的東西速度更快)。
但最重要的部分是:將新開發人員引入LINQ的東西比將自己的東西更容易。有一些教程,示例代碼,文檔,一切,我必須自己爲我的代碼創建。與使用其他技術(如WCF或數據綁定)的東西一樣。有很多缺陷需要照顧。

我學會了不要把自己發展成一個艱難的角落,一開始看起來既快又簡單,比學習如何使用庫更有趣,但在一段時間之後真的很痛苦幾個月後,通常甚至是我自己。

過了一段時間,創建我自己的數據容器的新事物消失了,我注意到與添加功能相關的痛苦。如果我使用了提供的類,我可以免費獲得一個功能。
接下來,我不得不向其他程序員解釋我的代碼。如果我使用了提供的課程,我可以指示他訪問某個網站以瞭解這些內容。但是對於我的班級,我必須自己去培訓他,這需要很長時間,並且很難讓一個新項目成爲新人。

0

使用已編譯的查詢。否則LINQ到SQL是很慢的。 Really

+0

我真的很感興趣,爲什麼這已經downvoted。我們在生產中使用Linq-to-SQL,並且我們必須將大部分查詢重寫爲已編譯的查詢,並且我們獲得了大約10倍的性能提升。 – bh213 2009-02-08 13:04:39

0

我們使用我們的手工製作的領域模型,以及生成的類,再加上一個簡單的實用工具,利用反射在需要時在它們之間進行轉換。我們已經考慮編寫一個轉換器生成器,如果我們達到反射會造成性能瓶頸的地步。

+0

我也考慮過這一點,但走了傑夫弗裏茨提到的路線。不需要反射! – Vyrotek 2008-10-28 01:17:05

4

LinqToSql爲您的表生成一組部分類。您可以將接口定義添加到實現您的域模型的這些部分類的「另一半」中。然後,如果使用存儲庫模式來包裝對Linq查詢的訪問,以便它們返回對象的接口實現(基礎Linq對象),那麼LinqToSql將變得非常靈活。

+0

我準備發佈這個。很高興聽到別人用這種方式。 – Vyrotek 2008-10-28 01:15:54