Groupby为Azure Function版本2中的Entity Framework Core 2.1.4在本地进行评估

时间:2018-12-27 01:00:14

标签: c# entity-framework-core azure-functions entity-framework-core-2.1

Microsoft说Entity Framework Core 2.1会向服务器生成GROUPBY语句。我有一个使用Entity Framework Core 2.1.4的Azure函数,但仍然得到:

  

Microsoft.EntityFrameworkCore.Query:警告:LINQ表达式'Sum()'无法翻译,将在本地进行评估。

     

Microsoft.EntityFrameworkCore.Query:警告:LINQ表达式'Count()'无法翻译,将在本地进行评估。

我的查询是:

var q = await db.TblRainGauging5minutes
    .Where(x => x.G_ID == 1)
    .GroupBy(x => new { x.G_ID })
    .Select(g => new {
        Id = g.Key.G_ID,
        Total = g.Sum(v => v.R_Value ?? 0),
        Rows = g.Count()
    })
    .ToListAsync();

这是我的项目设置:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="AutoMapper.Extensions.ExpressionMapping" Version="2.0.0" />
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="6.0.0" />
    <PackageReference Include="AzureFunctions.Autofac" Version="3.0.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.4" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.4" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.1.1" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.24" />
    <PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
  </ItemGroup>

我的设置或代码有问题吗?也许只是在Azure函数2中不起作用?我将目标框架从netstandard2.0更改为netcoreapp2.1.4,但仍然遇到问题。

1 个答案:

答案 0 :(得分:1)

我能够使用纯.NetCore项目重现该问题,因此Azure Function不是问题。真正的问题可能是sql服务器。当我以sql server 2012为目标时,总是可以解决问题。但是当我以sql server 2016为目标时,显示GROUP BY语句,并且不再看到该警告。 SQL事件探查器显示相同的结果。