Как использовать OData в Asp.net Core Web API без Entity Model? - PullRequest
1 голос
/ 22 октября 2019

Я использую 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.

...