Мне интересно, какие стратегии люди используют для создания и редактирования объекта в настройке master-detail. (Наше приложение представляет собой настольное приложение с доступом в Интернет.)
Вот как мы сейчас справляемся с этим: во всплывающем окне создается форма для объекта, который необходимо отредактировать, которому мы даем копию объекта. Когда пользователь нажимает кнопку «Отмена», мы закрываем окно и полностью игнорируем объект. Когда пользователь нажимает кнопку «ОК», основное представление уведомляется и получает отредактированный объект. Затем он копирует свойства измененного объекта в исходный объект, используя originalEntity.copyFrom(modifiedEntity). Если мы хотим создать новый объект, мы передаем во всплывающее окно пустой объект, который затем пользователь может редактировать, как если бы это был существующий объект. Главное представление должно решить, следует ли «вставлять» или «обновлять» сущности, которые оно получает, в коллекцию, которой оно управляет.
У меня есть несколько вопросов и замечаний по описанному выше рабочему процессу:
- кто должен заниматься созданием копии сущности? (мастер или деталь)
- мы используем copyFrom(), чтобы предотвратить замену объектов в коллекции, что может привести к разрыву ссылок. Есть лучший способ сделать это? (реализация copyFrom() может быть сложной)
- новые объекты получают идентификатор -1 (который используется уровнем сервера/спящим режимом, чтобы различать вставку или обновление). Это потенциально может вызвать проблемы при поиске (кэшированных) сущностей по идентификатору перед их сохранением. Должны ли мы вместо этого использовать временный уникальный идентификатор для каждой новой сущности?
Может ли кто-нибудь поделиться советами и рекомендациями или опытом? Спасибо!
Правка: я знаю, что на этот вопрос нет абсолютно неправильного или правильного ответа, поэтому я просто ищу людей, которые поделятся мыслями и плюсами и минусами того, как они справляются с основными/подробными ситуациями.