1

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

4

1 回答 1

1

(这是在假设使用 GUID 或一些非数据库生成的主键的情况下编写的)还有很多锅炉代码,如连接管理等......应该移动到存储库的基类。如果 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);
            }
        }
    }
}

但是我要强调的是,这确实是一个简单的幼稚实现,如果做 DDD,我个人会使用像 nHibernate 这样的 ORM 来实现我的持久性,因为对一个经过良好测试的持久层的要求并不重要

这也假设 IsDirty 函数考虑了孩子——我们还需要一种方法来查看订单是否是新的/编辑的,而不仅仅是脏的

于 2009-08-20T09:07:23.713 回答