我正在使用 Entity Framework 4.2(代码优先)来访问我的数据库。我假设如果我使用SingleOrDefault
它查询一个实体,如果该实体尚未被跟踪,则只会查询数据库,但情况似乎并非如此。Find
另一方面,该方法似乎确实这样做了。问题Find
在于它似乎不允许我加载相关数据。
有没有办法使用该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
我使用 Include 获得图书时,我可以加载评论:
// 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
?