.net - Entity Framework 可以在控制台程序中运行,但不能在azure函数中运行

标签 .net entity-framework azure-functions npgsql

我正在尝试构建一个解决方案架构,在其中引用一个 .net 项目,该项目包含 Entity Framework ORM 所需的所有代码,该 Entity Framework ORM 使用 Npgsql 提供程序连接到 postgres 数据库。

引用此类项目并进行查询可以在控制台应用程序中运行,但不能在 Azure 函数项目中运行。

Here is a link to a solution包含重现此错误所需的一切。在 ConsoleApp1 中,使用了对 eftest 的引用,并且将运行完成而不会出现错误。

名为 FunctionApp3 的项目是失败案例。一个针对 .net Framework 4.71 的全新 azure function 项目,引用 eftest 项目并查询它。如果您尝试该项目,you will get this error .

当然,当您实际安装它非常渴望的 Npgsql 4.0.2 软件包时,它 changes to this error.

我认为这是绑定(bind)重定向的问题。所以我添加了一个与控制台应用程序中现有的类似的app.config。事实证明azure functions cant use app.config files ,所以我无法在连接字符串中设置绑定(bind)重定向或 providerName 属性。据我所知,不支持关键字端口是由于未在连接字符串中设置providerName造成的。

Here is a log of the full rebuild of the azure function project.

问题:如何让这个 Entity Framework 项目与 azure 函数项目一起使用?

最佳答案

@grek40 通过将 ProviderName 作为 settings.json 中的属性提供了第二个错误的解决方案。

更新了settings.json

{
  "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "",
        "AzureWebJobsDashboard": ""

    },
    "ConnectionStrings": {
        "DefaultConnection": {
            "ConnectionString": "Server=localhost;Port=5432;Database=ef-azf-ca-testdatabase;User Id=postgres;Password=postgres;Pooling=true;Max Auto Prepare=10;Auto Prepare Min Usages=1;"
            "ProviderName":  "Npgsql"
        }
    }
}

对于第一个问题,我不知道为什么我不能使用 Npgsql 版本 4.0.3,但这并不重要,因为我可以只使用 4.0.2。帮助我们 Roji,你是我们唯一的希望。

关于.net - Entity Framework 可以在控制台程序中运行,但不能在azure函数中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53388468/

相关文章:

c# - 将参数传递给先前启动的程序实例

c# - 如何从 URL 获取数据并将其保存到 C#.NET 中的二进制文件中,而不会造成编码困惑?

c# - Entity Framework 是否使用反射并损害性能?

asp.net-mvc - 无法使用 MiniProfiler 到达一垒

azure - 将 JSON Web token (JWT) 与 Azure Functions 结合使用(不使用 Active Directory)

.net - 使用 CruiseControl 将 SVN 头文件夹复制到 Release 文件夹

asp.net - 基于 ASP.NET 的网站的数据库建议和最佳实践?

c# - Azure 函数忽略的functions.json graphToken 绑定(bind)

c# - 如何为 Azure 函数使用自定义计时器?

c# - 使用 TFS Api 查询我的工作区是否有最新文件