如何从 PostgresException 中获取错误 sql
How to get error sql from PostgresException
ASP.NET Core 6 MVC 应用程序使用 EF Core 和 Npgsql。
Ef 核心命令如
await ctx.Kasutajas.Where((k) => k.Kasutaja1 == suurusername).SingleOrDefaultAsync();
在缺少列的情况下抛出 PostgresException。 BatchCommand 属性 为空。看起来 EF Core 没有使用批处理命令接口。在这种情况下如何获得错误 sql?
app.Use(async (context, next) =>
{
try
{
await next.Invoke();
}
catch (PostgresException ex)
{
ex.BatchCommand in null.
ex.InternalQuery is null.
Debug.WriteLine(ex.InternalQuery);
?? How to get error Sql ?
}
}
});
在 .NET 5 Ngpsql 中对此有声明 属性 但它已根据
删除
如何在异常处理程序的 CATCH 块中获取错误 SQL?
https://github.com/npgsql/npgsql/issues/4222 中的讨论
不提供解决方案。
PostgresException.BatchCommand 正在为常规命令添加支持,例如 pre-6.0 Npgsql 中的 PostgresException.Statement。参见 https://github.com/npgsql/npgsql/issues/4222。
ASP.NET Core 6 MVC 应用程序使用 EF Core 和 Npgsql。
Ef 核心命令如
await ctx.Kasutajas.Where((k) => k.Kasutaja1 == suurusername).SingleOrDefaultAsync();
在缺少列的情况下抛出 PostgresException。 BatchCommand 属性 为空。看起来 EF Core 没有使用批处理命令接口。在这种情况下如何获得错误 sql?
app.Use(async (context, next) =>
{
try
{
await next.Invoke();
}
catch (PostgresException ex)
{
ex.BatchCommand in null.
ex.InternalQuery is null.
Debug.WriteLine(ex.InternalQuery);
?? How to get error Sql ?
}
}
});
在 .NET 5 Ngpsql 中对此有声明 属性 但它已根据
删除如何在异常处理程序的 CATCH 块中获取错误 SQL? https://github.com/npgsql/npgsql/issues/4222 中的讨论 不提供解决方案。
PostgresException.BatchCommand 正在为常规命令添加支持,例如 pre-6.0 Npgsql 中的 PostgresException.Statement。参见 https://github.com/npgsql/npgsql/issues/4222。