Tôi đang sử dụng Entity Framework 4.2 (Mã đầu tiên) để truy cập cơ sở dữ liệu của tôi. Tôi đã được giả định rằng nếu tôi truy vấn một thực thể bằng cách sử dụng SingleOrDefault
nó sẽ chỉ truy vấn cơ sở dữ liệu nếu thực thể đã không được theo dõi, nhưng điều này dường như không phải là trường hợp. Mặt khác, phương pháp Find
có vẻ như đang thực hiện điều này. Vấn đề với Find
là nó không xuất hiện để cho phép tôi tải dữ liệu liên quan.Mã khuôn khổ thực thể Tìm đầu tiên so với SingleOrDefault (Đang tải Eager)
Có cách nào để sử dụng phương pháp Find
nhưng cũng háo hức tải dữ liệu không? Như một ví dụ, tôi muốn tải một cuốn sách và tất cả các ý kiến của mình:
// 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);
Với SingleOrDefault
tôi có thể tải các xét khi tôi nhận được cuốn sách sử dụng Bao gồm:
// 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);
Có cách nào để có được hành vi của Find
với mức tải mong muốn là SingleOrDefault
?
Không có ý tưởng này tài sản địa phương tồn tại. Cảm ơn! – Dismissile
Xin chào, và liên quan đến tốc độ hoạt động, Tìm vs SingleOrDefault để lấy thông tin Thực thể? – Patrick