如何使用EF Code First CTP5获取ObjectSet <t>(对于通用存储库?)</t>

时间:2011-01-13 13:17:16

标签: c# entity-framework-4 repository-pattern code-first

对于Code First CTP 3和4,我通过在DbContext中实现具有return this.ObjectContext.CreateObjectSet<T>的方法来实现通用存储库模式。这允许我为我需要的任何类型创建一个对象集,然后我可以使用Linq来编码。

昨晚我升级到了CTP5,似乎他们已经改变了很多DbContext的实施方式。一方面是ObjectContext类中不再有DbContext属性。据我所知,没有方法可以创建ObjectSet<T>或任何其他数据集,我可以根据需要一般性地访问这些数据集,这些数据集将与数据上下文绑定。

然后我有了在方法中创建DbSet<T>的想法,因为这可以让我对它执行linq-to-entities操作。这不起作用,因为没有DbSet<T>的构造函数(或编译器告诉我),我无法将它绑定到我的数据上下文的现有实例。

有没有人知道如何使用Code First CTP5实现通用存储库?

1 个答案:

答案 0 :(得分:3)

我的存储库返回IQueryable<T>ObjectSet<T>DbSet<T>都实现了该接口。要使用代码优先获取DbSet<T>,请将属性从您创建的上下文类中拉出,或者上下文类使用的基类具有名为Set<T>()的方法,该方法将返回{ {1}}。

HTH