【问题标题】:Getter methods of EF not found in Azure Function在 Azure 函数中找不到 EF 的 getter 方法
【发布时间】:2017-07-24 11:35:40
【问题描述】:

我正在尝试在 Azure Function 中使用实体框架。我在本地创建了我的模型并创建了一个 DLL - 我尝试在控制台项目中使用它,它可以正常工作。

我想在 Azure Function 中做同样的事情,所以我将我的 DLL 上传到函数的 bin 文件夹并在代码中添加了一个引用:

#r ".\bin\IoTDataModel.dll" 

我还将EntityFramework添加到函数本身并引用它:

using System.Data.Entity;
using System.Data.Entity.SqlServer;  
using System.Data.Entity.ModelConfiguration.Conventions;

我编写了一些代码,这些代码使用了我的 DLL 中的模型并且编译正常。问题出现在运行时。 示例代码:

using (var context = new IoTDataBaseContext())
{
    var dev = context.Device.FirstOrDefault();
}

抛出此错误:

mscorlib:调用的目标已抛出异常。 f-EventHubMessageHandler__741454837:找不到方法:'System.Data.Entity.DbSet`1 IoTDataModel.IoTDataBaseContext.get_Device()'

“设备”是我在 EntityFramework 中拥有的模型之一。 通常我无法访问我的任何模型,总是抛出错误。这里可能有什么问题?

【问题讨论】:

  • 您是否尝试过重启您的函数应用?可能与此有关。
  • 你的 project.json 有必要的依赖吗?另请检查您的项目和 Azure Function 中的版本
  • @DavidG 我重新启动了整个函数,这个错误不再出现。现在还有一个,但我认为它与这个问题无关,所以我会发布一个新帖子。如果您提出相同建议的答案,我会将其标记为解决方案。谢谢。

标签: c# entity-framework azure exception azure-functions


【解决方案1】:

来自related GitHub issue

如果程序集版本控制正确(即,程序集标识随着您更改类型而更改),这应该可以按预期工作,并且新版本将得到解决。否则;您需要重新启动函数应用以解析程序集。不需要删除函数应用。

所以现在重启你的函数应该可以完成这项工作,但你可能应该考虑对你的程序集进行版本控制以防止再次发生这种情况。

【讨论】:

  • 谢谢,这有帮助。
猜你喜欢
  • 2021-09-14
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 2018-04-04
  • 1970-01-01
  • 2011-10-16
相关资源
最近更新 更多