我正在尝试创建一个需要访问数据库的azure函数。我有一个.netstandard 2.0库,其中包含所有数据库内容(它具有Microsoft.EntityFrameworkCore.Tools
和Microsoft.EntityFrameworkCore.SqlServer
Nuget包,并使用Scaffold-DbContext
创建了所有相关的类)。我的azure函数(已触发队列)具有对该库的引用,并且具有Nuget包Microsoft.EntityFrameworkCore.SqlServer
和Microsoft.EntityFrameworkCore
。一切都建立了,但是当它运行并且队列触发它抱怨的功能时:
[1/18/2019 3:53:49 PM]发生ScriptHost错误
[1/18/2019 3:53:49 PM]执行函数MyFunction时发生异常。 MyProcessor:无法加载文件或程序集 'Microsoft.EntityFrameworkCore,版本= 2.2.1.0,文化=中性, PublicKeyToken = adb9793829ddae60'。找不到或加载特定的 文件。 (来自HRESULT的异常:0x80131621)。 System.Private.CoreLib: 无法加载文件或程序集“ Microsoft.EntityFrameworkCore, 版本= 2.2.1.0,文化=中性,PublicKeyToken = adb9793829ddae60'。
在这里发生(因为我只是删除了using
块,所以它运行良好,但显然没有任何用处):
[FunctionName("MyFunction")]
public static void Run([QueueTrigger("my-items", Connection = "queueConnection")]string myQueueItem, TraceWriter log)
{
using (var ctx = new MyDotNetStandardLibary.Models.MyEFContext())
{
//...
}
log.Info($"C# Queue trigger function processed: {myQueueItem}");
}
bin
文件夹中确实包含Microsoft.EntityFrameworkCore.dll
,看起来它是正确的版本,那么为什么不加载它呢?我在JSON.net上也遇到了类似的问题,但最终甚至放弃使用它并解决了它。但是我需要EF。我缺少使Azure函数加载依赖项的功能?