有人可以使用传统的ado.net向我展示聚合根的简单CRUD语句吗? 提前谢谢!
答案 0 :(得分:1)
(这是在假设使用GUID或某些非数据库生成的主键的情况下编写的) 此外,很多锅炉代码(如连接管理等)都应该移动到Repository的基类。 如果Order是聚合根,那么可能应该将OrderLineRepo私有化为程序集
public class OrderRepository : Repository
{
public void Save(Order order)
{
if(order.IsDirty)
{
//sets up connection if required, command and sql
ICommand command = BuildCommandForSave(order);
command.Execute();
OrderLineRepository orderLineRepo = GetOrderLineRepo();
foreach(OrderLine line in order.OrderLines)
{
orderLineRepo.Save(line);
}
}
}
}
然而,我强调这实际上是一个简单的天真实现,并且我个人利用像nHibernate这样的ORM来实现我的持久性,如果做DDD,因为对良好测试的持久层的要求是非平凡的
这也假设IsDirty函数考虑到了孩子 - 我们还需要一种方法来查看订单是新的/编辑的,而不仅仅是脏的