我正在使用EF(dll版本爲4.4)來針對數據庫進行查詢。該數據庫包含幾個包含課程信息的表格。當看看實際發送給db的數據時,我看到一條巨大的,近1300行的SQL查詢(由於它的大小,我不打算在這裏粘貼)。我在上下文中運行的查詢是這樣的:如何避免EF中使用Include時生成的大量SQL查詢()
entities.Plans
.Include("program")
.Include("program.offers")
.Include("program.fees")
.Include("program.intakes")
.Include("program.requirements")
.Include("program.codes")
.Include("focuses")
.Include("codes")
.Include("exceptions")
.Include("requirements")
where plans.Code == planCode
select plans).SingleOrDefault();
我想避免從每個相關表的收集信息時,返回到服務器,但如此龐大的查詢我想知道如果有沒有更好的方法來做到這一點?
謝謝。
那麼你正在做急於加載,你的查詢試圖一次獲得所有的數據,因此它爲什麼很大。你在那裏看到什麼問題?其他選項是使用虛擬屬性進行延遲加載,當您試圖訪問它們時,EF將在後臺獲取該屬性,但您確實指定了不希望往返於數據庫。 – 2013-03-21 06:36:08
這裏有一種類似的答案http://stackoverflow.com/questions/5521749/how-many-include-i-can-use-on-objectset-in-entityframework-to-retain-performance – 2013-03-21 06:37:39
我想我是想知道我是否正確地看着這個。一個龐大的查詢與幾個小的查詢或是否有更好的方法來做到這一點。 – b3n 2013-03-21 08:16:20