#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);