问题描述
我们具有基于.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软件包
我们在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截屏。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)