Azure SQL依赖关系基于EF Core 3.1.7未出现在App Insights的应用程序映射中

问题描述

我们具有基于.net Core 3.1的Azure功能。我们使用最新版本的EntityFrameworkCore。

它连接到Azure SQL以存储/检索/查询数据。我们有时可以在Live App of Stream见解中看到Azure SQL的日志,例如打开连接,关闭连接(有时可能是由于启用了采样)

但是,我们在应用程序见解的应用程序映射中看不到Azure SQL依赖项。甚至,在跟踪表中,我都没有看到与Azure SQL相关的任何信息。

是否需要启用Azure SQL以使其显示为依赖项?我读了几篇msdn文章,当您使用Microsoft.Data.SqlClient程序包时,它会自动检测到SQL(我看到EF核心已经在内部安装了该程序包)。

还有一个后续问题,如果上面的问题得到了解决,是否可以解决?我可以检查是否断开/关闭了连接,或者何时为应用程序见解中的给定功能调用打开/关闭了连接?

根据以下评论,添加更多信息,

我们使用启动文件中的以下语句将DbContext添加到服务中。

builder.Services.AddDbContextPool<OurDbContext>(options =>
{
    options.UseSqlServer("connectionstring"),builder =>
    {
       builder.EnableRetryOnFailure(3,TimeSpan.FromSeconds(2),null);
    });
});

OurDbContext类具有以下构造函数,

public OurDbContext(DbContextOptions<OurDbContext> options)
    : base(options)
{
}

然后我们将OurDbContext类注入到不同的存储库中,该存储库使用此上下文与SQL进行通信。类似于以下内容:

public class Repo : IRepo
{
  public Repo(OurDbContext ourDbContext)
  {

  }
  
  public async Task AddAsync(Entity entity)
  {
    ourDbContext.AddAsync(entity);
    ourDbContext.SaveChangesAsync()
  }
}

我们将这些存储库注入到Function类中,并调用上述方法,例如

await _repo.AddAsync()

我们使用以下EFCore软件包

enter image description here

我们在host.json文件中具有以下内容。

{
    "version": "2.0","logging": {
        "applicationInsights": {
            "samplingExcludedTypes": "Request","samplingSettings": {
                "isEnabled": true
            }
        }
    }
}

注意: 我尝试了以下链接,只是为了检查sql依赖项是否出现在App见解中,尽管它没有使用我正在使用的EFCore /最新版本的Azure函数。我唯一添加的是本地设置中的APPINSIGHTS_INSTRUMENTATIONKEY。

https://dev.to/azure/using-entity-framework-with-azure-functions-50aa GitHub源代码: https://github.com/jeffhollan/functions-csharp-entityframeworkcore

通过上面的内容,我能够在我的应用洞见中看到SQL依赖关系。 但是,当我在上面修改Azure函数的版本(.net核心,EFCore)时,我正在当前的项目中使用,SQL依赖性不再出现在App见解中。不过,添加到日志级别以下会在控制台中显示调试日志。

"Logging": {
    "LogLevel": {
      "Default": "Debug",}
}

根据下面的注释为KrishnenduGhosh-MSFT截屏。

enter image description here

enter image description here

stackify的日志。

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)