Я использую OData в веб-API Asp.net Core. Я новичок в OData.
Я использовал Odata следующим образом:
Контроллер
[EnableQuery]
public async Task<ActionResult> ListAsync([FromODataUri]ODataQueryOptions<Orders> opts)
{
.........
}`
Модель
public List<Orders> GetList(ODataQueryOptions<Orders> opts)
{
if (order.Count == 0)
BindDataSource();
var results = order.AsQueryable();
var count = results.Count();
if (opts.OrderBy != null)
results = opts.OrderBy.ApplyTo(results);
if (opts.Filter != null)
{
if (opts.Filter.RawValue.Contains("substring"))
{
string key = opts.Filter.RawValue.Split(new string[] { "'" }, StringSplitOptions.None)[1];
results = results.Where(fil => fil.CustomerID.Contains(key) || fil.EmployeeID.ToString().Contains(key) || fil.Freight.ToString().Contains(key) || fil.OrderID.ToString().Contains(key) || fil.ShipCity.Contains(key) || fil.OrderDate.ToString().Contains(key));
}
else
results = opts.Filter.ApplyTo(results, new ODataQuerySettings()).Cast<Orders>();
}
}
if (opts.InlineCount != null)
count = results.Count();
if (opts.Skip != null)
results = opts.Skip.ApplyTo(results, new ODataQuerySettings());
if (opts.Top != null)
results = opts.Top.ApplyTo(results, new ODataQuerySettings());
}
Примечание
Мне не нужно создавать EDM для использования OData.
https://damienbod.com/2018/10/12/odata-with-asp-net-core/
Здесь он интегрирован с структурой сущностей. Но мне не нужно интегрироваться. Мне нужно использовать только его атрибут.
Как его использовать?
Когда я запускаю API, я получаю сообщение об ошибке типа
InvalidOperationException: No service for type 'Microsoft.AspNet.OData.ODataOptions' has been registered.
Примечание
Мне нужно использовать OData в веб-API без EDM.