Постоянные данные из пользовательского интерфейса - PullRequest
0 голосов
/ 05 августа 2010

Я делаю небольшое тестирование с EF4.Я построил простую базу данных, которая содержит одну таблицу: Таблица: Персона Столбец: Идентификатор Столбец: Имя

  • У меня есть приложение для формы Windows, которое содержит форму с сеткой.
  • У меня Model.edmx полностью настроен и работает правильно (проверено без инкапсуляции контекста).
  • Теперь я инкапсулировал контекст в общий репозиторий (Repository).Я учусь пользоваться репозиторием, а затем буду работать над UnitoOfWork.
    • Мой репозиторий реализует CRUD.
  • В моем репозитории есть метод, который возвращает все сущности (общедоступный список GetAll ()).
  • Список назначен моему источнику привязок в форме моего окна.Это работает, отлично.

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

  • Нужно ли мне настраивать какой-либо метод в форме, который проверяет наличие изменяемых данных / ed?
  • Как мне отправить это обратно в хранилище?Нужно ли привязывать его к контексту?

Я надеюсь, что кто-то может дать мне какое-то указание.Спасибо всем заранее!Дайте мне знать, если у вас есть какие-либо вопросы.

1 Ответ

0 голосов
/ 10 марта 2011

Событие нужно будет запустить в форме, будь то событие нажатия кнопки или какое-либо другое событие пользовательского интерфейса.В формах Windows, если дважды щелкнуть кнопку в конструкторе, он создаст для вас обработчик событий.

В обработчике событий вам потребуется использовать другой класс или напрямую использовать контекст EF,Поскольку вы идете по пути использования репозитория, вы можете использовать класс репозитория из вашего файла конструктора, хотя я бы рекомендовал пройти через уровень Service для применения любой бизнес-логики (т. Е. Пользовательский интерфейс вызывает Service Layer, Service Layer использует репозиторий внутренне).).

Это позволяет хранить код отдельно и его гораздо проще поддерживать / повторно использовать.

Но для сохранения данных в хранилище данных это может выглядеть примерно так ...

public void SetPersonName(int personID, string personName)
{
     var context = new PersonContext(myConnectionString);
     var person = context.Persons.Where(x => x.PersonID == personID).FirstOrDefault();

     if(person == null)
     {
          throw new InvalidOperationException("Boo Hoo, person ID is invalid");
     }

     person.Name = personName;
     context.SaveChanges();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...