Я ищу подход к дизайну, поэтому у меня нет никакого кода для обмена.Использование кэшированных данных из дочернего окна в родительском окне без поездки в базу данных
У меня есть приложение с богатым клиентом WPF, которое предоставляет подробные данные пользователю. Когда пользователь нажимает «Изменить», вся форма переходит в состояние редактирования. Это показывает пару кнопок «Добавить». Эти кнопки «Добавить» открывают дочерние представления, предоставляя пользователю инструменты для создания новых объектов. Думайте «добавление нового элемента в заказ клиента, с которым вы работаете». Это легкая часть.
Когда пользователь закрывает эти дочерние представления, новые объекты должны отображаться и редактироваться в родительском представлении для продолжения детального редактирования. Что-то вроде «добавьте новый элемент в дочернюю форму, выберите номер детали, затем закройте дочерний элемент и добавьте количество и дату доставки на родительском представлении. У меня нет гибкости в этом рабочем процессе. У меня также есть эта работа.
Когда пользователь закончил с родительским представлением и удовлетворен вновь добавленными деталями и подробными изменениями, они могут нажать «Сохранить». То есть, когда все изменения должны вернуться к базе данных. Если пользователь нажимает кнопку «Отменить», все изменения, в том числе сущности, созданные на дочерних представлениях, должны исчезнуть, а форма вернулась в исходное состояние.
Это последний бит, который меня плетит. Я почти новичок в Entity Framework, поэтому я думал, что смогу как-то сохранить весь набор изменений в памяти на клиенте и совершить все изменения в базы данных в точке сохранения пользователя. Я не знаю, возможно ли это, или как мне нужно внести изменения в свои данные, чтобы предотвратить случайные поездки в базу данных.
Чтобы поместить все факты в таблицу, я использую единицу шаблона работы, но при необходимости я имею доступ к объекту контекста EF. Если мне нужно работать с объектом context, я должен сделать это через несколько представлений и связанные с ними модели представления.
Я посмотрел на много stackoverflow Q & A, но не могу найти путь к решению или, возможно, признать его. У меня есть идеи об использовании клонированных объектов или, возможно, транзакций, но не знаю, есть ли другие или как выбирать между ними. Это будет новые навыки и потребует времени, затраченного на обучение. Я готов потратить время на изучение нового навыка, но не обучение и попытки три или четыре.
Я благодарен за любые советы, которые вы могли бы предложить.
Это будет работать только для типов значений, не так ли? У меня есть типы объектов, которые содержат другие типы объектов. Любая идея для них? – JimBoone
Почему бы вам не попробовать? Вам нужно будет скопировать объект и сравнить его. Прямое objA = objB будет иметь только ссылку. – Paparazzi