我使用實體框架4.2(代碼優先)來訪問我的數據庫。我的假設是,如果我使用SingleOrDefault
查詢實體,它只會查詢數據庫,如果該實體尚未被跟蹤,但似乎並非如此。另一方面,Find
方法似乎確實正在這樣做。 Find
的問題在於它似乎不允許我加載相關數據。實體框架代碼首先查找與SingleOrDefault(渴望加載)
有沒有辦法使用Find
方法,但也急於加載數據?舉個例子,我想加載一本書,它所有的評論:
// Load book from the database
Book book = context.Books.Find(1);
context.Entry<Book>(book).Collection<Review>.Load(); // Book.Reviews is now populated
// Load book from the change tracker
// This will include all Reviews as well
Book book2 = context.Books.Find(1);
隨着SingleOrDefault
當我使用這本書,我可以加載審覈包括:
// Load book + reviews from the database
Book book = Book.Include("Reviews").SingleOrDefault(b => b.Id == 1);
// Doing the same thing again requeries the database
Book book2 = Book.Include("Reviews").SingleOrDefault(b => b.Id == 1);
有沒有一種辦法獲得Find
的行爲與渴望加載SingleOrDefault
?
不知道這個地方財產存在。謝謝! – Dismissile 2012-04-11 20:19:52
嗨,關於操作的速度,Find vs SingleOrDefault獲取實體信息? – Patrick 2013-03-14 11:39:50