C# 面向对象的业务逻辑设计
我有一个卖出操作对象和两个买入操作对象,我想实现这样的行为,一个卖出操作解除了两个买入操作,如下所示:C# 面向对象的业务逻辑设计,c#,oop,C#,Oop,我有一个卖出操作对象和两个买入操作对象,我想实现这样的行为,一个卖出操作解除了两个买入操作,如下所示: 销售操作。出院(OneBuy操作); 手术。出院(双倍手术); 因此,我想问一下,我是应该在Discharge方法中调用repository函数,还是最好在Discharge方法之外调用repository save方法。 比如: 保存(销售操作); 所以,任何人都可以给我一些建议,在这个场景中,您将实现什么?使用服务类或其他更好的方法?保存不应成为业务逻辑的一部分-它会消除在单个工作单元
销售操作。出院(OneBuy操作); 手术。出院(双倍手术);
因此,我想问一下,我是应该在Discharge方法中调用repository函数,还是最好在Discharge方法之外调用repository save方法。 比如: 保存(销售操作);
所以,任何人都可以给我一些建议,在这个场景中,您将实现什么?使用服务类或其他更好的方法?保存不应成为业务逻辑的一部分-它会消除在单个工作单元中封装大量操作的能力 假设如果twoBuyOperation也可以被解除,那么您只希望解除oneBuyOperation。如果其中一个失败,您不希望任何一个被持久化 如果每次调用Discharge时,它都通过Save方法持久化sellOperation,那么如果第二次更改失败,您将无法可靠地回滚更改
using(UnitOfWork.Start())
{
sellOperation.Discharge(oneBuyOperation);
sellOperation.Discharge(twoBuyOperation);
UnitOfWork.CurrentSession.Save(sellOperation);
}
例如。在这种情况下应用
让所有buy对象注册自己以侦听Sell对象的Discharge()方法调用。并以这种方式称为出院:
sellOperation.Discharge();
你的其他问题正在等待你的答案。如果你认为这个答案对你的问题有帮助或是“答案”,请随意投票和/或接受。
using(UnitOfWork.Start())
{
sellOperation.Discharge(oneBuyOperation);
sellOperation.Discharge(twoBuyOperation);
UnitOfWork.CurrentSession.Save(sellOperation);
}
sellOperation.Discharge();