2010-04-30 2 views
3

Я один Sell объекта операции и два объекта Купить Операцию, я хочу реализовать такое поведение, что одна Sell Операции разрядов два Купить Операцию, это выглядит следующим образом:
дизайна OO для бизнеса-логики

 
sellOperation.Discharge(oneBuyOperation); 
sellOperation.Discharge(twoBuyOperation); 


поэтому я хочу спросить, следует ли мне вызывать функцию репозитория в методе «Разряд», или мне лучше вызвать метод сохранения репозитория вне метода «Разгрузка». как:

 
opRepository.Save(sellOpertion); 

Так кто-нибудь может дать мне некоторые советуют, что вы собираетесь реализовать в этом сценарии? используя класс обслуживания или что-нибудь еще лучше?

+0

другие Ваши вопросы ждут вашего TickMark. – Amsakanna

ответ

4

Сохранить не должно быть частью бизнес-логики - он удаляет возможность обертывания многочисленных операций в рамках одной единицы работы.

Скажите, что вы хотите, чтобы одно устройство было освобождено, если вы также можете разрядить устройство TwoBuyOperation. Если вы терпите неудачу, вы не хотите, чтобы он сохранялся.

Если каждый раз, когда вы вызывали «Разряд», он сохранял операцию sellOperation с помощью метода Save, вы не смогли бы надежно отменить изменения, если второй не сработает.

using(UnitOfWork.Start()) 
{ 
    sellOperation.Discharge(oneBuyOperation); 
    sellOperation.Discharge(twoBuyOperation); 

    UnitOfWork.CurrentSession.Save(sellOperation); 
} 

например.

+0

благодарит за ваши советы – user192415

+0

Не стесняйтесь проголосовать и/или принять, если вы считаете, что этот ответ был полезен или «ответ» на вашу проблему. –

Смежные вопросы