AspNetCore.OData дает ошибку сравнения на простом $ apply (groupby ()) - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь использовать $ apply (groupby ()) самым простым способом для получения различных значений свойства, но Microsoft OData выдает NotSupportedException об «операторах сравнения».

Я использую ASP.NET Core 2.2.0 с Microsoft.AspNetCore.OData 7.1.0. Я работаю с базой данных MSSQL, используя очень простые аннотации Linq-to-SQL. У меня есть один объект, который называется Location:

    [Table(Name = "Locations")]
    public class Location
    {
        [Column(Name = "LocationId", IsPrimaryKey = true)]
        public int LocationId { get; set; }
        [Column(Name = "Name")]
        public string Name { get; set; }
        [Column(Name = "PersonResponsible")]
        public string PersonResponsible { get; set; }
    }

Мой метод контроллера также прост:

    [ApiController]
    public class LocationsController : ODataController
    {
        [EnableQuery]
         public IQueryable<Location> Get()
        {
            return DataContextFactory.GetContext().GetTable<Location>();
        }
    }

DataContextFactory.GetContext() - это просто оболочка для создания нового DataContext с соответствующим SqlConnection.

Я настроил модель EDM, опять же, очень просто:

        private static IEdmModel GetEdmModel()
        {
            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
            builder.EntitySet<Location>("Locations");
            return builder.GetEdmModel();
        }

Я могу $ filter, $ select, посмотреть $ метаданные без проблем. Затем я пытаюсь получить все отдельные значения «PersonResponsible» с помощью http://server/odata/Locations?$apply=groupby((PersonResponsible)) Я получаю неправильный JSON в браузере, который выглядит следующим образом:

({"@odata.context":"http://server/odata/$metadata#Locations(PersonResponsible)","value":[)

Я вижу следующую ошибку в консоли сервера:

fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
An unhandled exception has occurred while executing the request.
System.NotSupportedException: Comparison operators not supported for type 'System.Collections.Generic.Dictionary`2[System.String,System.Object]'.

Я достаточно новичок в этом, чтобы задаться вопросом, упускаю ли я что-то важное - глядя на репозитории github, я не вижу подобных проблем, а некоторые другие, которые предлагают $ apply, обычно работают нормально.

...