ORM - сохранение / восстановление значений по умолчанию для объекта БД с помощью C # - PullRequest
0 голосов
/ 15 апреля 2009

Чтобы помочь пользователям с повторным вводом данных, я пытаюсь внедрить систему, в которой многие предыдущие свойства запоминаются при добавлении новых данных.

Можно ли использовать функциональность Properties.Settings.Default.MySetting или есть лучший способ для такого рода вещей?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2009

Это зависит от того, чего вы пытаетесь достичь. Преимуществом использования функции MySetting является то, что свойства «Самые последние» можно сохранить при следующем закрытии приложения.

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

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

0 голосов
/ 15 апреля 2009

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

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

Комментарии ОП:

К сожалению, создание глубокой копии объекта портит контекст объекта, когда возникают отношения. Новый объект со связями должен либо создавать новые реляционные объекты, либо запрашивать существующие объекты из базы данных.

Так? Если это отношение к другому объекту (внешнему ключу в базе данных), это отношение «использование», и вы просто сохраняете его. Если это атрибут, скопируйте его.

Например, предположим, что ваша форма представляет собой ввод данных о сотрудниках и имеет раскрывающийся список для, я не знаю, employeeType, который либо «освобожден» (без сверхурочных), либо «не освобожден» (получает сверхурочно). Вы извлекли значения для employeeType из базы данных и хотите, чтобы следующий введенный сотрудник имел те же значения, что и последний введенный сотрудник, чтобы сохранить нажатие клавиш ввода людей. Таким образом, ваша глубокая копия просто свяжет скопированного сотрудника с той же базой данных employeeType.

Но для атрибутных данных (например, имени) вы бы сделали копию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...