使用传统的ado.net对聚合根进行CRUD

时间:2009-08-20 07:34:51

标签: c# ado.net domain-driven-design ddd-repositories

有人可以使用传统的ado.net向我展示聚合根的简单CRUD语句吗? 提前谢谢!

1 个答案:

答案 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函数考虑到了孩子 - 我们还需要一种方法来查看订单是新的/编辑的,而不仅仅是脏的