“Microsoft.EntityFrameworkCore.Query.QueryableMethods”的类型初始值设定项引发异常

Józ*_*cki 24 c# entity-framework-core azure-functions

我有一个函数应用程序,当我使用azure-functions-core-tools@4.0.3780 start命令运行它时,它会引发以下错误。

func start
Run Code Online (Sandbox Code Playgroud)
System.Private.CoreLib: Exception while executing function: Test. 
Microsoft.EntityFrameworkCore: The type initializer for 
'Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor' 
threw an exception. Microsoft.EntityFrameworkCore: 
The type initializer for 
'Microsoft.EntityFrameworkCore.Query.QueryableMethods' threw an exception. 
System.Linq: Sequence contains more than one matching element.
Run Code Online (Sandbox Code Playgroud)

入口点

func start
Run Code Online (Sandbox Code Playgroud)

从 Visual Studio 启动函数应用程序时,它工作正常。

我认为我可以通过在函数应用程序 csproj 中直接引用来摆脱它Microsoft.EntityFrameworkCore

有任何想法吗?

谢谢

FunctionApp.csproj

  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" 
    Version="4.3.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.13" />
    <PackageReference Include="Microsoft.Extensions.Http" Version="3.1.11" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\FirstLib\FirstLib.csproj" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

FirstLib.csproj

  <ItemGroup>
    <ProjectReference Include="..\SecondLib\SecondLib.csproj" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

SecondLib.csproj

 <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.8" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.8" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite" Version="3.1.8" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

视觉工作室版本

Microsoft Visual Studio Professional 2019
Version 16.10.4
Run Code Online (Sandbox Code Playgroud)

Józ*_*cki 39

Microsoft.EntityFrameworkCore当我升级到5.0.0依赖时,问题就消失了SecondLib

<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite" Version="5.0.0" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

TargetFramework被触动过

<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,升级 .NET 5 -&gt; .NET 6 时也可以这样做 (2认同)