实体框架不会捕获 SQL 异常



我正在使用存储过程并使用实体框架核心提供的"FromSql"功能运行存储过程Microsoft这些功能。

当存在 SQL 异常时,实体框架根本不会捕获异常。

例如,SQL 中缺少存储过程"GetAppSection"。当我在调试模式下运行应用程序时,我可以在本地窗口深处找到"缺少存储的过程"错误。

然而,逻辑永远不会进入"捕获"块。实体框架只需运行"FromSql"命令并返回一个空对象。"捕获"块永远不会被击中。

知道为什么实体框架没有从SQL中捕获"缺少存储过程"异常吗?

public virtual IEnumerable<appSection> GetSections()
{
try
{
return _context.appSections.FromSql("dbo.GetAppSections @p0",
parameters: new[] { _standarParams.userID.ToString()}).AsEnumerable();
}
catch (Exception ex)
{
// error handling code
}
}

您返回的IEnumerable已延迟。您需要在实际访问该IEnumerable的代码(ToList,ForEach等(周围使用try catch块。

看这里和这里

最新更新