我最近创建了一个围绕 Entity Framework 的 DbContext 构建的非常强大的 API。我正在使用大量元数据编程并利用这样一个事实,即我可以通过调用 DbContext.Set(typeof(Customer)) 来获取我的数据。只是,在我的 API 中,我在编译时不知道我将传递给 Set 方法的类型。这与 EntityFramework 一起工作得很好,我想添加另一个层抽象并让它与 EntityFramework 或 DataServiceContext 一起工作。所以,我真的有两个问题。
首先,更具体地说,是否有等效于 DbContext.Set(type) 方法的 DataServiceContext(即 odata/wcf)?
其次,更一般地说,是否有比较 DbContext 和 DataServiceContext 提供的 API 的好资源?
最佳答案
EntityFramework 和 DataServices 客户端 API 不应混合使用。即使它们看起来相似,它们也不是。 DbSet 表示实体集。我认为在 DataServiceContext 中没有关于实体集的强有力的契约。相反,实体集的名称作为字符串传递给需要知道这一点的方法(例如查看 DataServiceContext.AddObject()
或 DataServiceContext.CreateQuery()
方法)。从某种意义上说,它使动态编程 DataServiceContext 变得更加容易。另一方面,您仍然需要知道管道的另一侧(即服务器)是什么。如上所述,WCF 数据服务和 EntityFramework 是不同的技术(即使它们可以一起工作),它们的 API 虽然相似,但用于不同的目的。因此,比较它们就像比较苹果和橙子一样。
关于entity-framework - 是否有等效于 DbContext.Set(type) 的 DataServiceContext.Set(type),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14419406/