Entity framework 是否存在与DbContext.Set(类型)等效的DataServiceContext.Set(类型)

Entity framework 是否存在与DbContext.Set(类型)等效的DataServiceContext.Set(类型),entity-framework,wcf-data-services,entity-framework-5,dbcontext,wcf-data-services-client,Entity Framework,Wcf Data Services,Entity Framework 5,Dbcontext,Wcf Data Services Client,我最近创建了一个围绕实体框架的DbContext构建的非常健壮的API。我使用了大量的元数据编程,并利用了这样一个事实,即我可以通过调用DbContext.Set(typeof(Customer))来获取数据。只是,在我的API中,我不知道在编译时将传递给Set方法的类型。这在EntityFramework中工作得非常好,我想添加另一层抽象,并让它同时在EntityFramework或DataServiceContext中工作。所以,我有两个问题 首先,更具体地说,是否存在与DbContext.

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

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


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

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

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

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


我觉得这个答案没有帮助。是的,一个是ORM,另一个是OData客户端,但这两种技术都允许我查询、插入和更新数据。因此,有足够的相似性来进行比较。如果您不同意,我很抱歉,但我认为您混淆了what(WCF vs ORM)和how(API)。