【发布时间】:2024-05-18 18:25:02
【问题描述】:
我正在使用领域驱动设计开发应用程序。我一直在使用的模式之一是存储库模式。为简单起见,假设我有以下类和接口。
Car - 表示汽车领域概念的领域类。
public class Car {
public int Id {get;private set;}
public string SomeUniqueCode {get;private set;}
}
ICarRepository - 用于添加、删除或保存对 Car 对象的更改的接口。
public interface ICarRepository{
Car AddCar(Car c);
void DeleteCar(Car c);
}
我的问题是,如何检查数据库中所有 Car 对象中 SomeUniqueCode 属性的唯一性?该属性在对象生命周期中的任何时候都由用户更改(不是自动生成的)。当然,一种解决方案是将唯一键放入数据库中,但这不是 DDD 的原则。我见过用于验证单个对象的规范模式。该模式将如何应用于一组 Car 对象?
规范类(我们称之为 CheckUniqueCarSpecification)访问 ICarRepository 是否合法?
【问题讨论】:
-
谢谢。这可能就是答案 - 可以访问存储库的规范。
标签: domain-driven-design repository-pattern unique-constraint specification-pattern