动态创建POCO的数据服务

动态创建POCO的数据服务

问题描述:

尝试了解使用WCF数据服务的选项,基本上我试图通过从第三方API设置RestFull服务来抽象第三方http API调用。最重要的是,我对Odata表示和API支持数据服务感兴趣。动态创建POCO的数据服务

例第三方呼叫,

1)GETALL车辆

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 

的挑战IM看着我如何可以调用列表{到从Web服务调用中简化它。这部分是striang向前,我需要一些指导是什么时候进行呼叫2),因为位置信息是基于通过Vehcle的web服务调用,Linq to Object假设如果我正确理解POCO,则填充。

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

我目前正在调查类似的情况。由于WCF数据服务的主要用例是通过Entity框架公开数据库表,因此找到关于做其他事情的良好信息在实践中有点薄弱。

你试图做的事实上是相当简单的,可以通过使用WCF数据服务工具包来简化; you want to wrap odata around what

您需要在根级暴露两个实体类型,车辆和地点

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

  2. 您的车辆实体将需要一个位置属性与[ForeignProperty]属性

  3. 必须实现其命名方法的车辆信息库; GetOne(string id),GetAll()GetLocationByVehicle(string id)方法,该id将是您需要进行api调用的VehicleId。

使上/车辆将调用GETALL()在储存库方法Get请求,/车辆(1)将调用GetOne()方法和/车辆(1)/位置将调用GetLocationByVehicle( )方法传入Id'1'。