1

我已经建立了一个自定义聚合

CREATE AGGREGATE Helpers.Median(@input REAL)
RETURNS REAL EXTERNAL NAME Aggregates.Median

用 edmx 写的:

<Function Name="Median" Aggregate="true" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="Helpers" ReturnType="float">
  <Parameter Name="input" Type="Collection(float)" Mode="In" />
</Function>

创建了这个类:

public class MySqlFunctions
{
    [DbFunction("Entities.Store", "Median")]
    public static float Median(IEnumerable<float> arg)
    {
        throw new NotSupportedException("Direct calls are not supported.");
    }
}

执行

    using (Entities context = new Entities ())
    {
        var q = context.DataTable
            .GroupBy(x => x.ID
            , y => y.Value
            , (k, g) => new { k, 
               c=MySqlFunctions.Median(g) }
            ).ToList();
    }

并得到这个错误:

System.NotSupportedException: 'em_PriceTrackerModel.Store.MySqlFunctions' 类型上的指定方法 'Single Median(System.Collections.Generic.IEnumerable`1[System.Single])' 无法转换为 LINQ to Entities 存储表达式,因为它的返回类型与其 DbFunction 属性指定的函数的返回类型不匹配。

我做错了什么?

4

0 回答 0