具有POCO的动态创建的数据服务

时间:2010-05-26 16:18:14

标签: wcf wcf-data-services

尝试了解使用WCF数据服务可能有哪些选项,基本上我试图通过从第三方api调用集中创建RestFull服务来抽象第三方http API。除此之外,我对Odata表示和数据服务的Api支持感兴趣。

示例第三方通话,

1)GetAll Vehicles

  I want to represent it in a restfull call http://localhost/Vehicles

2)GetVehicleLocation(车辆)

  I want to represent it in a restfull call http://localhost/Vehicles(1)/Location

我正在寻找如何从Web服务调用中调用List {使其变得简单}的挑战。这部分是严格的前进,我需要一些指导是什么时候进行调用2),因为位置信息是基于通过Vehcle的webservice调用,Linq到Object假设如果我理解正确POCO填充..

这篇文章 Data Services Streaming似乎正在路上......

1 个答案:

答案 0 :(得分:1)

我正在研究类似的情况。由于WCF数据服务的主要用例是通过实体框架公开您的数据库表,因此找到关于做其他任何事情的好信息在实际上有点薄弱。

您要做的事情实际上相当简单,可以通过使用WCF数据服务工具包进行简化; you want to wrap odata around what

您需要在根级别公开两种实体类型:Vehicle和Location

  1. 您需要DataService<MyDataContext>作为服务的入口点,这需要为车辆和位置定义两个IQueryable属性。您可能不需要在根级别访问位置,但这是使其与底层反射提供程序一起工作的唯一方法。如果没有位于根级别的位置,则服务不会公开位置实体的元数据。

  2. 您的Vehicle实体需要具有[ForeignProperty]属性的位置属性

  3. 您必须为具有名称的方法的车辆实施存储库; GetOne(string id)GetAll()GetLocationByVehicle(string id)方法,ID将是您拨打api电话所需的VehicleId。

  4. 在/ Vehicles上发出Get请求将调用存储库上的GetAll()方法,/ Vehicles(1)将调用GetOne()方法和/ Vehicles(1)/ Location将调用GetLocationByVehicle()方法传入Id'1'。