根据msdn文档的解释:
ObjectSet表示用于执行创建、读取、更新和删除操作的类型化实体集。
ObjectQuery表示在给定的对象上下文中针对概念模型的类型化查询。
但是还是不清楚用法上有什么区别,什么情况下该使用什么
1 //看看Object的成员吧
2 public class ObjectSet<TEntity> : ObjectQuery<TEntity>, IObjectSet<TEntity>, IQueryable<TEntity>, IEnumerable<TEntity>, IQueryable, IEnumerable where TEntity: class
3 {
4 // Fields
5 private readonly EntitySet _entitySet;
6
7 // Methods
8 internal ObjectSet(EntitySet entitySet, ObjectContext context);
9 public void AddObject(TEntity entity);
10 public TEntity ApplyCurrentValues(TEntity currentEntity);
11 public TEntity ApplyOriginalValues(TEntity originalEntity);
12 public void Attach(TEntity entity);
13 public T CreateObject<T>() where T: class, TEntity;
14 public TEntity CreateObject();
15 public void DeleteObject(TEntity entity);
16 public void Detach(TEntity entity);
17
18 // Properties
19 public EntitySet EntitySet { [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] get; }
20 private string FullyQualifiedEntitySetName { get; }
21 }
22
23
ObjectQuery应该只提供查询,ObjectSet提供了全套CRUD, 还有Attach,Detach这些的涉及TEntity的变更跟踪的东西。唉,知道ObjectSet的额外接口成员怎么用就应该知道区别了。如果可以使用EF4.1以上,使用DbContext的接口吧。
ObjectQuery这个是查询用的
ObjectSet也可以用于查询吧