gpt4 book ai didi

c# - Entity Framework 单个漂亮的错误消息

转载 作者:行者123 更新时间:2023-11-30 21:43:41 25 4
gpt4 key购买 nike

我有很多代码看起来像这样......

var employee = dbContext.Employees.Single(x => x.Id == dto.Id);

在编辑之前,我使用单一查找来查看数据库中是否存在具有 gievn Id 的记录。

如果 Id 不存在,虽然我收到一个内部错误并且用户不知道会发生什么。

在不使用 SingleOrDefault 和检查 null 的情况下,我将如何编写干净的代码来捕获此错误并向用户显示漂亮的错误消息。

示例(我可以这样做,但我必须将此代码复制粘贴到 100 多个位置)..

var employee = dbContext.Employees.SingleOrDefault(x => x.Id == dto.Id);
if(employee == null){
throw new BusinessException("Could not find Employee");
}

最佳答案

您可以使用此扩展代替 SingleOrDefault():

public static T SingleOrDefaultWithErrorMessage<T>(this DbSet<T> entities, Func<T, Boolean> predicate = null, String entityName = "the record") where T : class
{
var entity = predicate != null
? entities.SingleOrDefault(predicate)
: entities.SingleOrDefault();
if (entity != null)
return entity;

throw new ApplicationException($"Could not find {entityName}.");
}

我添加了一个可选参数,以便您可以指定实体的友好名称。

请记住,如果 predicate 不够具体,您仍然会得到异常 Sequence contains more than one element 这可能会让您的用户感到困惑。您还可以选择在此扩展方法中处理该异常。

关于c# - Entity Framework 单个漂亮的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41489513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com