【发布时间】:2019-05-09 20:46:02
【问题描述】:
使用 module-zero-core-template(完全更新),我最近在用户要求删除帐户时遇到问题(这是第一次),我的代码中的很多地方都在获取“用户”实体使用 Repository.Get(TPrimaryKey id) 或 Repository.GetAsync(TPrimaryKey id):
var user = _userRepository.Get(model.UserId);
直到现在我还没有意识到当实体不存在时它会引发异常,但我必须将所有调用替换为(或等效的异步):
var user = _userRepository.FirstOrDefault(u => u.Id == model.UserId);
我的代码不是用来处理这种异常的,而只是返回一个空值。
我的问题是:
- 为什么返回异常而不是空值?
- 有没有办法修改这种行为?
提前感谢。
【问题讨论】:
-
该存储库来自哪里?你能提供那个代码吗?
-
它来自那里:private readonly IRepository
_userRepository; -
好的,但是实现在哪里?
-
来自Abp.Domain.Repositories,公共接口IRepository
: IRepository, ITransientDependency where TEntity : class, IEntity -
你想要面向 null 的编程,但这是一个固执己见的框架,Get() 的行为与 Single() 一样。因此,如果您想编码容错,请在使用 GET() 之前使用 ANY() 检查记录是否存在。
标签: asp.net-core aspnetboilerplate