我正在嘗試學習DDD,並且正在製作一個簡單的演示項目。DDD:在將數據插入數據庫之前,對象ID必須爲0
現在,我有一個通用的存儲庫
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代產品放在哪裏?在存儲庫中?如果是的話,我應該怎麼做,因爲我有一個通用的存儲庫。
謝謝
+1,但Id應該有一個非公開的setter。 – jgauffin