Tôi đang sử dụng khung Entity lần đầu tiên và nhận thấy rằng đối tượng thực thể trả về các bộ sưu tập thực thể.Làm thế nào để bạn truy vấn một bộ đối tượng và trong cùng một bộ lọc truy vấn đó là một bộ sưu tập thực thể được đính kèm?
DBEntities db = new DBEntities();
db.Users; //Users is an ObjectSet<User>
User user = db.Users.Where(x => x.Username == "test").First(); //Is this getting executed in the SQL or in memory?
user.Posts; //Posts is an EntityCollection<Post>
Post post = user.Posts.Where(x => x.PostID == "123").First(); //Is this getting executed in the SQL or in memory?
Cả hai ObjectSet và EntityCollection có thực thi IQueryable không? Tôi hy vọng họ làm như vậy mà tôi biết các truy vấn đang được thực hiện tại nguồn dữ liệu và không phải trong bộ nhớ.
EDIT: Vì vậy, EntityCollection rõ ràng không trong khi ObjectSet thực hiện. Điều đó có nghĩa là tôi sẽ sử dụng mã này tốt hơn?
DBEntities db = new DBEntities();
User user = db.Users.Where(x => x.Username == "test").First(); //Is this getting executed in the SQL or in memory?
Post post = db.Posts.Where(x => (x.PostID == "123")&&(x.Username == user.Username)).First(); // Querying the object set instead of the entity collection.
Ngoài ra, sự khác biệt giữa ObjectSet và EntityCollection là gì? Chẳng phải chúng giống nhau sao?
Cảm ơn trước!
EDIT: Xin lỗi, tôi mới làm quen với điều này. Tôi đang cố để hiểu. Các EntityCollections được đính kèm sẽ được tải xuống, vì vậy nếu tôi truy cập chúng thì bộ nhớ sẽ được phổ biến với chúng. Thay vì làm hai querys đến bộ đối tượng như trong chỉnh sửa cuối cùng của tôi, tôi tò mò nếu truy vấn này sẽ được nhiều hơn những gì tôi đã sau:
DBEntities db = new DBEntities();
User user = (from x in db.Users
from y in x.Posts
where x.Username == "test"
where y.PostID == 123
select x).First();
Bất kỳ ai trả lời câu hỏi này đều phải làm những gì bạn nên làm thay vì đăng câu hỏi này. Mẹo, F12 sẽ đưa bạn đến định nghĩa của thuộc tính khi con trỏ trên tên thuộc tính và loại khi con trỏ có trên loại. – Brian
Bạn không cần phải là một smartass. – Chev