4

我最近创建了一个围绕 Entity Framework 的 DbContext 构建的非常强大的 API。我正在使用大量元数据编程并利用这样一个事实,即我可以通过像 DbContext.Set(typeof(Customer)) 这样的调用来获取我的数据。只是,在我的 API 中,我在编译时不知道我将传递给 Set 方法的类型。这与 EntityFramework 一起工作得很好,我想添加另一个层抽象并让它与 EntityFramework 或 DataServiceContext 一起工作。所以,我真的有两个问题。

首先,更具体地说,是否存在等效于 DbContext.Set(type) 方法的 DataServiceContext(即 odata/wcf)?

其次,更一般地说,是否有一个很好的资源可以将 DbContext 提供的 API 与 DataServiceContext 进行比较?

4

2 回答 2

1

EntityFramework 和 DataServices 客户端 API 不应混用。尽管它们看起来相似,但它们并不相似。DbSet 表示实体集。我不认为 DataServiceContext 中的实体集有很强的契约。相反,实体集的名称作为字符串传递给需要知道这一点的方法(例如查看DataServiceContext.AddObject()DataServiceContext.CreateQuery()方法)。从某种意义上说,它使动态编程 DataServiceContext 变得更加容易。另一方面,您仍然需要知道管道的另一端(即服务器)是什么。如上所述,WCF 数据服务和 EntityFramework 是不同的技术(即使它们可以一起工作),它们的 API 虽然相似,但用于不同的目的。因此,比较它们就像比较苹果和橙子一样。

于 2013-01-19T22:54:55.417 回答
0

客户端的 DbContext API 与服务器端的 DbContext 不同。主要目标是暴露数据和模型,这可以做得很好。我认为您可能过度设计了您的应用程序,因为 WCF 数据服务可以提供足够的功能。

这是来自非常擅长实体框架的 Ladislav Mrnka 的链接,他展示了如何使用 WCF 数据服务公开强大的 api。

使用存储库模式实现 WCF 数据服务

于 2013-12-03T18:24:43.597 回答