使用EF Core在Azure函数的Application Insights中启用Sql依赖关系



我有一个使用Microsoft.EntityFrameworkCore 3.1.5的Azure Function v3应用程序。我无法启用SQL依赖项跟踪。已经挣扎了一天了。

为了隔离这个问题,我创建了一个没有EF的独立AzureFunction。代替EF,我使用CCD_ 2,它也被EF使用。功能如下:

public static class Function1
{
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req)
{
log.LogInformation("C# HTTP trigger function processed a request.");
var ids = "";
using (var connection = new SqlConnection("connectionstring"))
{
var command = connection.CreateCommand();
command.CommandText = "SELECT TOP 10 Id FROM table";
await connection.OpenAsync();
using (var reader = await command.ExecuteReaderAsync())
{
while (reader.Read())
{
ids += reader.GetInt32(0).ToString() + ",";
}
ids = ids.Substring(0, ids.Length - 1);
}
}
return new OkObjectResult("Ids:" + ids);
}
}

应用的参考资料

<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="1.0.19269.1" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.5" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.3" />

将应用程序部署到Azure(不带EF(后,将按预期跟踪SQL依赖关系。

在将引用Microsoft.EntityFrameworkCore添加到项目中并且其他内容都没有更改后,跟踪将停止工作。删除引用后,跟踪将重新工作。将引用更新到最新版本也没有帮助。

你知道为什么会发生这种事吗?有什么建议可以解决这个问题吗?

Microsoft.EntityFrameworkCore 3.1.4中,他们似乎引入了一个导致这种行为的问题。降级到3.1.3解决了这个问题。

更新:在我打开github上的一个bug后,他们向我指出了与此相关的Microsoft.Data.SqlClient和EventSource的一个问题。

最新更新