如果实体不存在,为什么存储库 "Get" 和 "GetAsync" 方法会抛出 EntityNotFoundException 而不是返回 null?

Why repository "Get" and "GetAsync" methods throw EntityNotFoundException instead of returning null if the entity doesn't exists?

使用 module-zero-core-template(完全更新),我最近在用户要求删除帐户时遇到问题(这是第一次),我的代码中的很多地方都得到 "User" 实体使用 Repository.Get(TPrimaryKey id) 或 Repository.GetAsync(TPrimaryKey id):

var user = _userRepository.Get(model.UserId);

直到现在我还没有意识到当实体不存在时它会抛出异常,但我不得不用(或等效的异步)替换所有调用:

var user = _userRepository.FirstOrDefault(u => u.Id == model.UserId);

我的代码不是用来处理这种异常的,而是 return 中的空值。

我的问题是:

提前致谢。

这是因为实现方式与 that 相同。

如果你想在不抛出异常的情况下找到一个实体,你必须使用 FirstOrDefault(TPrimaryKey id) function.

编辑(解释):

等于说Single(x => x.Id == 1)。你期待一个结果,如果没有,它会抛出异常。这就是为什么我们有 SingleOrDefault(expr)SingleOrDefault(expr)FirstOrDefault(expr)First(expr)。涉及同一校长