我正在尝试学习 DDD,并且正在制作一个简单的演示项目。
现在,我有一个通用存储库
public class Repository<T> where T : class, IAggregateRoot
{
public void Add(T entity)
{
ObjectSet.AddObject(entity);
}
}
和一Product
堂课
public class Product : IAggregateRoot
{
private Guid _id = Guid.Empty;
public Guid Id
{
get { return _id; }
private set { _id = value; }
}
public string Name { get; private set; }
protected Product() { }
public Product(string name)
{
Name = name;
}
}
这个想法是我希望一个已创建的产品有一个空的 Guid。只有在插入数据库时它才应该获得一个新的 Guid。
Product product = new Product("Hello World");
product.Id == Guid.Empty; // True
现在怎么样,当我调用存储库来插入一个产品时,它会用一个空的 Guid 将它插入到数据库中。
var repository = new Repository<Product>();
repository.Add(product);
我应该将产品的 Guid 生成放在哪里?在存储库中?如果是,我应该怎么做,因为我有一个通用存储库。
谢谢