SQL触发器不能使用环境变量作为运行时参数

问题描述 投票:0回答:1

我正在尝试使用一个简单的 SQL 触发器,其中有两个参数:表和连接字符串。我试图从环境变量中获取连接字符串,但出现错误:

CS0182:属性必须是常量表达式

有什么办法可以解决这个问题吗?

[Function("WarningTrigger")]
public async Task Run(
        [SqlTrigger("[dbo].[SensorWarnings]", Environment.GetEnvironmentVariable("dbconnection"))] 
        IReadOnlyList<SqlChange<Model.SensorWarning>> changes,
        FunctionContext context)
{
    _logger.LogInformation("SQL Changes: " + JsonConvert.SerializeObject(changes));

    SensorDatabaseQuery query = new SensorDatabaseQuery();
    await query.GetData();
}         
c# azure azure-functions
1个回答
0
投票

感谢@Rui Jarimba的评论。

您不需要在 Sql 触发器声明中显式传递 Environment.GetEnvironmentVariable 以及连接字符串,因为建议使用

[SqlTrigger("[dbo].[SensorWarnings]", "dbconnection")]
,其中 dbconnection 的值将在本地开发时从本地设置文件中获取。部署到功能应用程序后的应用程序设置。

必填。应用程序设置的名称,其中包含数据库的连接字符串,该数据库包含监视更改的表。连接字符串设置名称对应于包含 Azure SQL 或 SQL Server 实例的

connectionstring
的应用程序设置(在 local.settings.json 中用于本地开发)。

通过查看错误

CS0182: an attribute must be a constant expression
你就会知道函数声明中只允许使用常量表达式。

我相信,您的意图是从应用程序设置中获取连接字符串值,只需添加属性名称即可实现。

© www.soinside.com 2019 - 2024. All rights reserved.