我正在为现有项目开发新的API集,它具有相当复杂的数据库模型。因此我决定REST API模型与数据库模型不同。
我想使用OData,因为它提供了很好的查询支持。但是,当我尝试在两个模型定义之间进行转换时,我陷入了困境。
基本上我需要做这样的事情(MagicConvert方法是我缺少的部分):
[EnableQuery]
public IQueryable<WebApiData> Get(ODataQueryOptions<WebApiData> options)
{
ODataQueryOptions<Data> convertedOptions = MagicConvert(options);
var results = convertedOptions.ApplyTo(db.Data);
return results.Select(res => MagicConvert2(res)).AsQueryable();
}
我当然能够将数据转换为WebApiData并返回。
所以我的问题如下:
这样的事情是可能的(以及怎么做)?
如果不是,这是否意味着OData仅用于(或多或少)直接数据库访问(没有不同的模型)?