无法将实体框架核心加载到C#azure函数中

Max*_*uez 5 c# azure entity-framework-core azure-functions

我已经开了一个问题,Azure/azure-functions-host和我有一个回购与再现步骤,但我在这里的情况下张贴这有什么内在的错误我在做什么,或者已经有人偶然打开这个问题.

我的目标:我想在一个azure函数中运行一些代码,这些代码存在于现有visual studio解决方案的类库中.

此代码恰好使用实体框架核心来读取和写入SQL Server数据库.

在尝试隔离我面临的问题时,我最终得到了以下场景:

Repro步骤:

  1. 在Visual Studio中:"文件">"新建">"项目">"Azure功能"

  2. 选择 Azure Functions v2 Preview (.NET Core)

  3. 选择 Http trigger

  4. 选择 Storage Emulator

  5. 选择访问权限 Function

  6. 使用nuget Microsoft.EntityFrameworkCore版本安装2.0.2

  7. EFCore包中添加对任何内容的调用

    在我的情况下,我添加了以下行:

    log.Info(typeof(DbContext).AssemblyQualifiedName);
    
    Run Code Online (Sandbox Code Playgroud)
  8. 确保azure存储模拟器正在运行

  9. 从visual studio(F5)运行该函数

  10. 点击控制台中打印的网址

预期的行为:以及示例Http trigger函数的默认行为,我希望看到每个调用打印以下行:

Microsoft.EntityFrameworkCore.DbContext, Microsoft.EntityFrameworkCore, Version=2.0.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Run Code Online (Sandbox Code Playgroud)

实际行为:应用程序在运行时抛出异常并输出以下内容

[11-Apr-18 6:33:59 AM]执行'Function1'(Reason ='此功能通过主机API以编程方式调用.',Id = 6faabfd8-eb96-4d71-906c-940028a7978a)
[11-Apr- 18 6:33:59 AM]执行'Function1'(失败,Id = 6faabfd8-eb96-4d71-906c-940028a7978a)
[11-Apr-18 6:33:59 AM] System.Private.CoreLib:执行函数时出现异常:Function1.FunctionApp1:无法加载文件或程序集"Microsoft.EntityFrameworkCore,Version = 2.0.2.0,Culture = neutral,PublicKeyToken = adb9793829ddae60".无法找到或加载特定文件.(来自HRESULT的异常:0x80131621).System.Private.CoreLib:无法加载文件或程序集'Microsoft.EntityFrameworkCore,Version = 2.0.2.0,Culture = neutral,PublicKeyToken = adb9793829ddae60'.

目前的猜想:在研究这个问题时,我发现了一些可能相关的东西:

Azure函数运行时已经有一组可用的包,其中一个包Newtonsoft.Json在特定版本中.在Newtonsoft.Json从项目引用较新版本的情况下,观察到类似的行为.

是一个StackOverflow问题. 是一个github问题

Mor*_*sen 4

解决方法:Microsoft.EntityFrameworkCore回滚到版本 2.0.1。不知道这是否是一个已知的 EFCore 问题,但回滚到 2.0.1 有助于解决完全相同的问题。