2011-12-07 57 views
1

好吧,我有一個LINQ to SQL系統在WCF服務上設置。我的應用程序包含對此服務的引用,它用於從SQL數據庫收集數據。我使用由SQLMetal.exe生成的DataContext對象。LINQ to SQL中的新數據與本地緩存的數據相比較

我在我的DataContext對象,客戶端和組中的兩個實體的集合。每個客戶端都包含一個字段,該字段說明它所屬的組數(以逗號分隔的組ID列表)。

在應用程序中,我有客戶的表。如果我選擇一個並單擊按鈕,則第二個表格將顯示客戶端所屬組的詳細信息。

這裏的問題:當我點擊這個按鈕,做我去的數據庫中向各組的時候,或者我應該加載組應用程序啓動時,並通過篩選那些?後者會更快,但我想要一個併發解決方案。第二個問題(我知道不應該有兩個真的,但我只是意識到我可能會對此問題感到困惑):當我在DataContext對象的集合上運行LINQ查詢時,是否獲得最新數據庫數據?

謝謝。

+0

我可以回覆三個答案,或者我可以只回復一次。與我正在尋找的那種信息相關的三個很好的答案。多謝你們! – user738383

回答

1

關於第二個問題 - 是的,對LINQ每個查詢,以SQL導致發出來的後盾數據庫的SQL語句。並進一步澄清這是每次嘗試枚舉LINQ語句。我並不是要暗示每個LINQ語句都會立即發送到數據庫,當然這不是。

上緩存與每次查詢的第一部分是依賴於其它因素。有必要嗎?意思是說,你試圖糾正一個性能問題嗎?在數據成爲用戶關注之前,數據能夠承受多大的「陳舊」?這些都是您需要回到應用程序所有者決定的問題。

1

與大多數真實世界的性能問題一樣......這取決於。最好的告訴方式是用你感覺正確的方式編寫你的應用程序,然後如果性能是一個問題,那麼應該相應地測量和改變。

是的,你會得到最新的數據庫信息。

1

除非加載組需要大量時間,否則不要緩存。 不成熟的優化從來不是一個好主意。 只要記住,你可能想要並確保你的團體集合是很好的解耦,如果你必須相對簡單,優化。