动态创建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
您需要在根级暴露两个实体类型,车辆和地点
你需要一个
DataService<MyDataContext>
作为服务的切入点,这将需要定义车辆2种IQueryable的性质和地点。您可能并不需要在根级别访问位置,但它是使其与底层反射提供者一起工作的唯一方法。如果没有位于根级别的位置,该服务将不会公开位置实体的元数据。您的车辆实体将需要一个位置属性与
[ForeignProperty]
属性必须实现其命名方法的车辆信息库;
GetOne(string id)
,GetAll()
和GetLocationByVehicle(string id)
方法,该id将是您需要进行api调用的VehicleId。
使上/车辆将调用GETALL()在储存库方法Get请求,/车辆(1)将调用GetOne()方法和/车辆(1)/位置将调用GetLocationByVehicle( )方法传入Id'1'。