Do entity collections and object sets implement IQueryable<T>?

Posted by Chevex on Stack Overflow See other posts from Stack Overflow or by Chevex
Published on 2011-01-13T17:35:07Z Indexed on 2011/01/13 17:54 UTC
Read the original article Hit count: 241

I am using Entity Framework for the first time and noticed that the entities object returns entity collections.

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?

Do both ObjectSet and EntityCollection implement IQueryable? I am hoping they do so that I know the queries are getting executed at the data source and not in memory.

EDIT: So apparently EntityCollection does not while ObjectSet does. Does that mean I would be better off using this code?

    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.

Also, what is the difference between ObjectSet and EntityCollection? Shouldn't they be the same?

Thanks in advance!

© Stack Overflow or respective owner

Related posts about LINQ

Related posts about entity-framework