Я ищу подход к проектированию, поэтому у меня нет кода для обмена.
У меня есть приложение-клиент WPF rich-client, которое представляет подробные данные пользователю.Когда пользователь нажимает «Редактировать», вся форма переходит в состояние редактирования.Это показывает пару кнопок «Добавить».Эти кнопки «Добавить» открывают дочерние представления, предоставляя пользователю инструменты для создания новых объектов.Подумайте, «добавление нового товара в заказ клиента, с которым вы работаете».Это простая часть.
Когда пользователь закрывает эти дочерние представления, новые объекты должны отображаться и редактироваться в родительском представлении для продолжения подробного редактирования.Что-то типа «добавьте новый элемент в дочернюю форму, выберите номер детали, затем закройте дочерний элемент и добавьте количество и дату доставки в родительское представление. У меня нет никакой гибкости в этом рабочем процессе. У меня есть эта работа также.
Когда пользователь закончит с родительским представлением и будет удовлетворен вновь добавленными элементами и подробными изменениями, он может нажать «Сохранить». Это означает, что все изменения необходимо вернуться в базу данных. Если пользователь щелкаетотмена, все изменения, включая сущности, созданные в дочерних представлениях, должны исчезнуть, и форма вернулась в свое первоначальное состояние.
Это последний бит, который озадачивает меня. Я почти новичок в Entity Framework, поэтому я подумалЯ мог бы каким-то образом сохранить весь набор изменений в памяти на клиенте и зафиксировать все изменения в базе данных в момент сохранения пользователем. Я не знаю, возможно ли это, или как мне следует вносить изменения в свои данные, чтобы предотвратитьслучайные поездки в базу данных.
Чтобы положить все факты на стол, я использую унит работы, но у меня есть доступ к объекту контекста EF, если это необходимо.Если мне нужно работать с объектом контекста, я должен сделать это для нескольких представлений и связанных с ними моделей представлений.
Я рассмотрел множество вопросов и ответов по стеку, но не могу найти или, возможно, распознатьпуть решения.У меня есть некоторые идеи по поводу использования клонированных сущностей или, возможно, транзакций, но я не знаю, есть ли другие или как выбирать между ними.Это были бы новые навыки и потребовали бы времени, потраченного на обучение.Я готов потратить время на изучение нового навыка, но не учусь и пробую три или четыре.
Я благодарен за любой совет, который вы могли бы предложить.