2010-09-17 72 views
2

我正在使用LINQ to SQL來訪問我的數據庫,但我只讀,我從不插入,更新或刪除任何東西。有沒有辦法爲此優化LINQ2SQL?只讀LINQ to SQL

回答

5

是的。 Linq 2 SQL將默認緩存從數據庫中讀取的所有數據。它需要執行此操作來跟蹤您對對象應用的所有更改,以便在調用SubmitChanges()時生成必需的插入/更新/刪除語句。

如果您只是在讀取數據,則這是不準確的。您可以通過在DataContext上將ObjectTrackingEnabled屬性設置爲false來關閉對象跟蹤。

0

我被告知的一件事是避免使用生成的記錄類。

也就是說,如果你有一個Users表,L2S會爲你創建一個User類,這就是它從數據庫返回的內容。你應該創建一個「影子」類---所有相同的屬性,而不是別的,直接將它們複製到這些記錄中供你使用。事實上,如果這將是完全只讀,你可以在構造函數分配他們,只有公共干將:

class myUser 
{ 
    public string FName {get; private set} 
    public string LName {get; private set} 
    public myUser(User user) 
    { 
     this.FName = user.FName; 
     this.LName = user.LName; 
    } 
} 



var users = from u in db.Users 
      where ..... 
      select new myUsers(u); 

這避免了大量的開銷所需的處理寫作對象的可能性再次出來。