我是否应该在插入之前验证相关实体是否存在
本文关键字:是否 验证 实体 存在 插入 | 更新日期: 2023-09-27 17:56:11
class Customer
{
public int Id { get; set; }
}
class Sale
{
public int Id { get; set; }
public int CustomerId { get; set; }
}
class SaleService
{
public void NewSale(Sale sale)
{
//Should i validate if Customer exists by sale.CustomerId before call save?
saleRepository.InsertOrUpdate(sale);
}
}
我正在使用领域驱动设计和实体框架。我是否应该通过销售验证客户是否存在。呼叫保存前的客户 ID?
我通常不这样做。通常,这些信息来自之前加载的客户端(它存在)。但是,在某些情况下,更新数据库时缺少CustomerId
。
-
由于多个用户同时访问系统时的并发性。但这种情况应该使用乐观并发控制(版本)有选择地解决。我们通常不会在所有情况下都尝试处理并发,因为几乎不可能这样做,并且这样做也有副作用,如性能问题、复杂性,...我们只关注系统中的一些关键代码,如果存在并发问题,这些代码会导致问题。
-
客户端试图通过发送不适当的
CustomerId
来破解系统。但这是另一个应该根据授权或类似的东西来检查的问题。
在大多数情况下,我认为 db 中的外键约束就足够了。