簡體   English   中英

Linq-to-SQL:有多少datacontexts?

[英]Linq-to-SQL: how many datacontexts?

我有一個包含> 300個表的SQL Server 2008數據庫。 我必須設計的應用程序是Windows Forms應用程序,.NET 3.5,C#。

哪個是使用Linq-to-SQL的最佳方式?

我打算為每個業務實體制作一個datacontext。

有什么問題嗎 ?

我需要知道這種使用Linq-to-SQL的方式是否有任何缺點或者是否會產生性能問題?

謝謝。

每個數據庫通常應該有一個單獨的DBML文件(=數據上下文)。 您當然不應該為每個業務實體創建一個DataContext ,因為這樣做會使您失去LINQ to SQL的大部分有用功能,例如內存事務(工作單元),延遲加載以及對多個實體執行LINQ查詢。

你有一個非常大的模型(+300表),這意味着很多實體。 除了LINQ to SQL設計器之外,很多實體都不是一個大問題。 使用具有如此大型號的設計師可能非常煩人。 這可能是在多個子域中拆分域的原因(每個子域都有一個DBML文件),但肯定不是每個實體一個域。 但是,請記住,您在域的邊界處丟失了L2S功能。

在過去,我建議一個團隊將5個DBML文件中的+150實體域分開,然后將它們合並為一個DBML。 編輯模型的痛苦上升了,但使用多個DataContext的痛苦消失了,這大大降低了他們的整體痛苦。

為每個業務實體創建數據上下文沒有意義,每個數據庫只需要一個datacontext。

這取決於有多少用戶將同時使用您的數據庫,而不是有多少表。 所以關於典型的數據庫問題:連接數,鎖定和其他東西。

我現在使用1作為整個數據庫,但有更多的合法用途。 例如,我在安裝連接到遠程數據庫的站點時運行腳本,並導入數據並將數據轉換為新格式以進行部署。 該過程使用一些臨時表。

通過將臨時表放在單獨的上下文中,一旦部署了站點,我可以簡單地刪除這些上下文和代碼,因為它們是獨立的實體。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM