我在WebAPI中使用OData(使用实体框架模型),它似乎正在起作用。但是我有一个名为NominalAccounts的实体/控制器,其中控制器被称为“NominalAccountsController”,数据库实体是“NominalAccount”'我想要使用的OData路径是' nominal_accounts' (即http://test/api/nominal_accounts)。所以我在Startup类中有以下代码:
builder.EntitySet<NominalAccount>("nominal_accounts");
但这似乎失败了,因为它寻找带有下划线的控制器。有没有办法为实体集定义它应该寻找哪个控制器?
答案 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);