OData с веб-API / Entity Framework — определяет имя контроллера для объекта

#c# #entity-framework #asp.net-web-api #odata

#c# #entity-framework #asp.net-web-api #odata

Вопрос:

Я использую OData в WebAPI (с моделями Entity Framework), и, похоже, он отлично работает. Однако у меня есть объект / контроллер с именем NominalAccounts, где контроллер называется ‘NominalAccountsController’, объект БД — ‘NominalAccount’, а путь OData, который я хочу использовать, — ‘nominal_accounts’ (т. е. http://test/api/nominal_accounts ). Итак, у меня есть приведенный ниже код в классе Startup:

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

Но, похоже, это не удается, потому что он ищет контроллер с подчеркиванием. Есть ли способ определить для набора объектов, какой контроллер он должен искать?

Ответ №1:

Я не знаю, как выглядит ваша настройка, но у меня есть одна 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);