遗留数据库上的OData服务

时间:2015-01-30 14:09:53

标签: c# entity-framework asp.net-web-api odata

在旧数据库上构建OData服务的最佳选择是什么?

所有教程都是从头开始创建数据库以匹配实体框架模型。

如何使用与正在公开的服务模型不匹配的现有数据库?

例如,我有这两个db表:

Science_Data {country_id varchar(3),year int,fig decimal}

Arts_Data {country_id varchar(3),year int,fig decimal}

我希望使用此路径/类别('科学')/数据和/类别('艺术')/数据(仅用于示例的ID)公开它

通过创建包含类别和数据实体的服务模型并创建控制器,我获得了一些成功:

public class CategoryController : ODataController
{
    [EnableQuery]
    [ODataRoute("/Category('{id}')/Data")]
    public IQueryable<Sector> Get([FromODataUri]string id)
    {
        if (id == "Science")
        { 
            return db.Science_Data.Select(i => new Data() { CountryId =    i.country_id, Year = year, Figure = fig });
        }
        else if(id == "Arts")
        {
            return db.Arts_Data.Select(i => new Data() { CountryId = i.country_id, Year = year, Figure = fig });
        }
    }
}

这在一定程度上起作用并支持查询选项,过滤将在数据库级别进行。

但是我在支持$扩展选项方面遇到了问题,所以我想知道我的方法是否正确。

0 个答案:

没有答案