是否存在与DbContext.Set(type)等效的DataServiceContext.Set(type)

时间:2013-01-19 22:08:47

标签: entity-framework wcf-data-services entity-framework-5 dbcontext wcf-data-services-client

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

客户端的DbContext API与服务器端的DbContext不同。主要目标是公开数据和模型,这可以很好地完成。我认为您可能会过度使用您的应用,因为WCF数据服务可以提供足够的功能。

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

Implement WCF Data Service using the Repository Pattern