我正在尝试使用一个简单的 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();
}
感谢@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
你就会知道函数声明中只允许使用常量表达式。
我相信,您的意图是从应用程序设置中获取连接字符串值,只需添加属性名称即可实现。