UPDATE:從我聽到的情況來看,我想象的是我在下面描述的問題。所以,這幾乎不是問題。未來的讀者,繼續前進...在這裏沒有什麼可看的。如何阻止自動生成的Linq to SQL類加載所有數據?
我有一個ASP.NET MVC項目,很像NerdDinner教程示例。 (我使用MVC 2,但爲了創建它,遵循NerdDinner教程)。
根據本教程的part 3中的說明,我通過創建一個「Linq to SQL Classes」(.dbml)表面並將我的數據庫表放到它上面來創建了我的數據庫的Linq-to-SQL模型。設計者根據我的數據庫表自動添加生成的類之間的關係。假設我的類是根據NerdDinner示例的,所以我有Dinner和RSVP表,每個Dinner記錄都與許多RSVP記錄相關聯 - 因此在生成的類中,Dinner對象具有RSVPs屬性,它是一個RSVP對象列表。
我的問題是這樣的:它出現(和我會很樂意被證明是錯誤的這一點),一旦我 訪問Dinner對象,它加載所有相應的RSVP對象,即使我請勿使用RSVPs會員。
第一個問題:這真的是生成的類的默認行爲嗎?
在我的特殊情況下,對象圖包含更多的表(它的數量級更多的記錄),所以這是災難性的行爲 - 當我想要做的就是顯示數據時,我會加載大量數據單親記錄的細節。
第二個問題:是否有通過設計器UI公開的任何屬性,讓我修改此行爲? (我找不到)。
第三個問題:我已經看到了如何通過使用帶有DataContext的相關的DataShape
對象控制在DataContext
相關記錄加載的描述。那是我要做的事情嗎?如果有的話,是否有像NerdDinner這樣的教程不僅會展示如何去做,還會爲正常使用提供一個「模式」?
「看來(和我會很樂意被證明是錯誤的這一點),一旦我訪問■裝載所有相應的RSVP對象的」 這是什麼意思?您是否檢查分析器,RSVP SQL是否正在運行?它是否返回行? – jfar 2010-03-12 14:43:16
我在調試器中檢查了Dinner對象,並深入到RSVPs成員中,該成員似乎已經填充。也許這是事實,我在調試器中查看它導致它被填充?有一種簡單的方法可以告訴嗎? – 2010-03-12 14:46:22
那就是Gary的情況。你檢查它,你加載它。 – jfar 2010-03-12 14:52:07