Каков наилучший способ обновить только 1 поле крупного бизнес-объекта внутри транзакции? - PullRequest
0 голосов
/ 19 августа 2010

Я нахожусь в ситуации, когда мне нужно выполнить подробную запись основной записи транзакции ( Удалить предыдущие сведения, вставить новые сведения, обновить статус мастера )

  1. ОсновнаяБизнес-объект имеет 20 полей
  2. Подробнее Бизнес-объект имеет только 4 поля

Теперь мне нужно обновить только 1 поле в основной таблице и 4 поляв таблице подробностей для вставки.

Если я инициализирую новый главный объект, 19 полей теряются для простого обновления.Что мне делать, чтобы эффективно справиться с этой ситуацией?

Могу ли я создать новый объект и унаследовать только одно поле от моего основного бизнес-объекта?Пожалуйста, приведите небольшой рабочий пример, если вы посоветуете мне DTO или что-то с наследованием.Спасибо.

Ответы [ 2 ]

1 голос
/ 19 августа 2010

Полагаю, вы имеете в виду предоставление этих 4 полей вместо того, чтобы наследовать их, поскольку вы не можете на самом деле наследовать поля, только класс.

Вы могли бы сделать меньший, более простой "объект обновления", но я бы сделалпоэтому, если этот меньший объект также существует логически в вашей модели.В идеале вы действительно не хотите создавать специальные объекты для обновления только частей ваших бизнес-объектов.Вместо этого задача вашего уровня персистентности - быть достаточно умным, чтобы знать, какие поля изменились, и действовать соответствующим образом (т.е. только обновлять эти поля).

Итак, в итоге:

  • Makeобновлять объект, только если он также является логической частью вашей доменной модели
  • Доверьтесь своему постоянному слою, чтобы увидеть, что изменилось.
0 голосов
/ 19 августа 2010

Создать DTO с этими 4 полями.Пользовательский интерфейс отправит этот DTO на бизнес-уровень, который будет использовать новые значения для изменения бизнес-объекта.Чем вы сохраняете этот измененный бизнес-объект.

...