【发布时间】:2021-09-21 14:20:12
【问题描述】:
我在将部分代码重写为可用于其他方法的通用函数时遇到问题。
这是我要重写的代码示例:
if(!await _bikeDbContext.Order.AnyAsync(x => x.OrderId == orderId))
{
throw new BusinessNotFoundException("Order was not found");
}
这是我想要的东西:
await _bikeDbContext.Order.IsAnyRule(x => x.OrderId == orderId));
我开始自己编写代码,但我不知道在函数体中放什么
public static void IsAnyRule<TEntity>(TEntity entity)
where TEntity : class
{
}
【问题讨论】:
-
如果你想要描述的用法,你需要一个 DbSet
上的扩展方法 -
您使用的方法已经是通用的。
DbSet<T>.Find已经是通用的。.Any(...)已经是通用的。你为什么想要别的东西?您要解决什么实际问题? -
为什么要进行存在性检查而不是编写无论实体存在与否都有效的代码?例如
.FirstOrAsync将加载实体,如果它丢失则返回 null。