AspNetCore.OData在简单$ apply(groupby())上给出比较错误

时间:2019-05-09 16:49:10

标签: c# odata asp.net-core-webapi

我试图以最简单的方式使用$ apply(groupby())来获取属性的不同值,但是Microsoft OData抛出了有关“比较运算符”的NotSupportedException。

我正在将ASP.NET Core 2.2.0与Microsoft.AspNetCore.OData 7.1.0一起使用。我正在使用非常简单的Linq-to-SQL注释针对MSSQL数据库运行。我有一个称为位置的对象:

    [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毫无问题地查看$ metadata。然后,我尝试使用http://server/odata/Locations?$apply=groupby((PersonResponsible))获取所有不同的“ 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通常可以正常工作的问题。

0 个答案:

没有答案