实体框架可以在控制台程序中工作,但不能在天蓝色函数中工作

时间:2018-11-20 07:53:33

标签: .net entity-framework azure-functions npgsql

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

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

Here is a link to a solution包含重现此错误所需的所有内容。在ConsoleApp1中,使用了对eftest的引用,该引用将完整运行而不会出错。

名为FunctionApp3的项目是失败的情况。一个面向.net Framework 4.71的全新天蓝色函数项目,引用eftest项目并对其进行查询。如果您尝试该项目,则you will get this error

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

我认为这是绑定重定向的问题。因此我添加了一个app.config,类似于控制台应用程序中现有的一个。原来是azure functions cant use app.config files,所以我无法在连接字符串中设置绑定重定向或providerName属性。据我所知,keyword port not supported是由于未在连接字符串中设置providerName引起的。

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

问题:如何使这个实体框架项目与azure函数项目一起工作?

1 个答案:

答案 0 :(得分:2)

@ 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,您是我们唯一的希望。