2010-01-05 71 views
3

例如,我有2個方法使用一個DataContext(Linq到sql)。是否有任何理由使用一個DataContext實例,而不是幾個?

using(DataContext data = new DataContext){ 
    // doing something 
    another_datamethod(data); 
} 

void another_datamethod(DataContext data){ 
    // doing 
} 

使用此款式?或者具有相同的結果,我可以創建單獨的「使用DataContext」。有什麼好處,我會實現如果我會使用一個DataContext?也許有些緩存可能性?

回答

-1

Datacontexts跟蹤更改並進行緩存,所以緩存是一種可能性,具體取決於您正在執行的工作。

0

最近,我閱讀了大量文章和博客,強烈建議您爲應用程序使用多個DataContext,這是由於多個問題,包括創建與查找表相關的記錄。當我學習LINQ-to-SQL時,對我來說最有吸引力的特性之一就是能夠將我的完整數據庫模式導入一個「大」的DataContext。所以,這就是我所做的...但幾個月後,來自矛盾的信息說,我所做的是一件壞事。該怎麼辦,該怎麼辦...

九個月後,這裏是我的立場。我的單個大DataContext是仍然是我的單個大型DataContext。我有超過30個數據存儲庫類訪問包含在其中的60多個表,我仍然沒有看到有效的理由來破壞我現有的數據宿主,或者不使用單個DataContext來處理下一個項目。文章和博客作者遇到的問題是有效的問題。但是,像大多數技術一樣,從來沒有一種方法可以做事。我的時間和精力的最佳投資是學習並真正理解LINQ到SQL如何做。我發現幫我做的最好的書就是Joseph C. Rattz,Jr.編寫的Pro LINQ: Language Integrated Query in C# 2008。LINQ-to-SQL的內容非常詳細和清晰,並且有很多例子可以說明這個謎團。

因此,就你的情況來說,創建一個大的DataContext或創建許多更小的...這個選擇取決於你。較小的顯然提供了更好的重用機會,而一個重要的提高了您可以專注於業務邏輯和表示代碼的時間。

+0

我在這裏講的不是大或小。我的問題是:所有堆棧方法中的一個實例或每個方法中的一個實例。 – 2010-01-05 18:18:59

+1

不好意思...... 如果你想對同一個DataContext執行多個方法,你一定要使用using塊。使用示例傳遞DataContext作爲參數要求對每個方法調用在本地初始化該對象。您可以選擇將單個全局DC作爲單例對象,但如果元對象在使用後不刷新,則可能會產生併發問題。 使用塊確保DC實例在使用後處置。我會去那個... – 2010-01-05 23:31:25

相關問題