【发布时间】:2012-01-20 20:24:38
【问题描述】:
我正在为实体框架编写一个通用存储库,但对这些调用之间的区别感到困惑:
ObjectContext.CreateObjectSet<T>
ObjectContext.CreateQuery<T>
DbContext.Set<T>
我想要一个既支持从 .edmx 文件生成的上下文又支持代码优先 DbContext 的通用存储库,所以我有这个:
public abstract class EntityRepository<TClass>
where TClass : class, new()
{
//private readonly TContext _context;
private readonly ObjectSet<TClass> _objectSet;
protected EntityRepository(IObjectContextAdapter context)
{
_objectSet = context.ObjectContext.CreateObjectSet<TClass>();
}
protected EntityRepository(ObjectContext context)
{
_objectSet = context.CreateObjectSet<TClass>();
}
public ObjectSet<TClass> Query()
{
return _objectSet;
}
}
在我在网上看到的示例中,我已经看到所有 3 个都使用过,它们之间的实际区别是什么?更好的表现是明智的吗?我知道您可以使用所有 3 种方法针对上下文编写 LINQ 查询。
【问题讨论】:
标签: entity-framework generics datacontext