比方說,我有這樣一個方法,以便:dbSet.Include在調用dbSet之後調用時是無意義的嗎?
public DbSet<Ingredient> GetIngredients(int limit = 0)
{
return db.Ingredients;
}
所以,在我的控制,我可以作出這樣一個電話:
var ingredients = GetIngredients()
.Include(i => i.AspNetUser)
.Include(i => i.AspNetUser1)
.Include(i => i.Ingredient_Category)
.Include(i => i.Measurement_Unit);
這將是毫無意義或慢,因爲GetIngredients()
呼叫無論如何要加載一切?
如果是這樣,有沒有辦法讓我可以得到GetIngredients()
使用各種包括作爲params?
最糟糕的情況我可以在存儲庫中爲每個場景加載不同的方法(或者我是否應該這樣做呢?感覺控制器應該說什麼視圖要麼...或者DbSet是唯一的以EF,我只能從我的倉庫返回IEnumarables?)
非常感謝
你需要澄清你的問題,你使用包括,如果你是1.不做延遲加載,2.做延遲加載,但你寧願要求在一個查詢中的一切。現在,如果你包含多個包含多對多關係的內容,你可能會想要單獨加載這些內容以避免cartesian生產。你的問題仍然不清楚,你是否想要單獨包括,因爲你想對所包含的內容應用過濾? –