1
任何人都可以使用传统的ado.net向我展示聚合根的简单CRUD语句吗? 在此先感谢!使用传统的ado.net对聚合根进行CRUD
任何人都可以使用传统的ado.net向我展示聚合根的简单CRUD语句吗? 在此先感谢!使用传统的ado.net对聚合根进行CRUD
(这是在假定使用GUID或一些非数据库生成的主键的情况下编写的) 还有很多锅炉代码(如连接管理等)应该移动到Repository的基类中。 如果订单是聚合根,一个可能应该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函数考虑到儿童 - 我们还需要一种手段,看看订单是新的/编辑,不仅仅是肮脏的
作为一个方面,经常会使用默认的未保存ID值 - 所以当保存被调用时,我们可以看看这个ID值并确定对象是新的还是更新的 – saret 2010-03-03 12:24:54
Re:“一个良好测试的持久层的要求并不重要”。在某些情况下,开发ADO.net持久层是有道理的。对于涉及重要报告的项目,纯粹的ADO.Net或micro-orm是用于CQRS查询方面的“细读模型”的推荐方法。因此,如果您需要将ADO.Net用于查询方面,那么将ADO.net用于命令端也不算什么,特别是如果涉及的遗留数据库不容易映射到模型类。您的答案帮助我将ADO.Net方法与DDD结合在一起。 – 2014-12-30 15:23:12