我正在尝试构建一个解决方案架构,在其中引用一个 .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/