具有Web API /实体框架的OData - 定义实体的控制器名称

时间:2016-10-24 10:56:04

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

我在WebAPI中使用OData(使用实体框架模型),它似乎正在起作用。但是我有一个名为NominalAccounts的实体/控制器,其中控制器被称为“NominalAccountsController”,数据库实体是“NominalAccount”'我想要使用的OData路径是' nominal_accounts' (即http://test/api/nominal_accounts)。所以我在Startup类中有以下代码:

 builder.EntitySet<NominalAccount>("nominal_accounts");

但这似乎失败了,因为它寻找带有下划线的控制器。有没有办法为实体集定义它应该寻找哪个控制器?

1 个答案:

答案 0 :(得分:0)

我不知道您的设置是什么样的,但我为每个实体都有一个controller。为了让我的控制器拥有一个特定的端点,我只需使用ODataRoutePrefix - 前缀:

using System.Web.Http;
using System.Web.OData;
using System.Web.OData.Query;
using System.Web.OData.Routing;

[ODataRoutePrefix("nominal_accounts")]
public class NominalAccountsController : ODataController
{
    [EnableQuery]
    public virtual IQueryable<NominalAccount> Get(ODataQueryOptions<NominalAccount> q)
    {
        return _your_odata_source;
    }
}

我的配置如下:

IEdmModel model = GenerateModel();
config.MapODataServiceRoute(routeName: "ODataRoute", routePrefix: "odata", model: model);