C #: перенесение изменений из DataGridView в BindingList обратно в базу данных? - PullRequest
1 голос
/ 11 января 2011

Я использую BindingList для отображения списка объектов Person в DataGridView в приложении Windows Forms.Изменения в DataGridView изменяют базовый BindingList.У меня эта часть работает.

Теперь я хочу, чтобы список сохранился в таблице базы данных.Чтение списка из базы данных и заполнение списка лиц - прямая задача, но если я добавлю / отредактирую / удалю человека из DataGridView, как и когда я сохраню это изменение обратно в базу данных?

(Во-вторых,, этот подход в порядке или я упускаю какую-то большую картину? Я не хочу использовать таблицы данных, потому что я хочу работать с моим кодом абстрагированным объектно-ориентированным способом.)

1 Ответ

1 голос
/ 11 января 2011

Для легкого сохранения объектов в Windows Forms для начала вы можете использовать LINQ2SQL , он делает именно то, что вам нужно, плюс также материализует объекты, когда вы хотите собрать их из базы данных.

Быстрый пример, после создания контекста linq из схемы базы данных для поддерживаемых баз данных, то есть SQL Server (Express), все, что вам нужно, это создать его экземпляр в вашей форме и использовать его во время отдельной атомарной операции с данными - читать, редактировать , напишите или отмените.

  private YourAppContext context;

  private void RenewContext()
  {
     context = new YourAppContext();
  }

  private void LoadData()
  {
    RenewContext();
    DataGridView1.DataSource = context.Articles.OrderByDescending(x => x.DatePosted).Take(10);
  }

  private void AcceptButtonPressed()
  {
    context.SubmitChanges();
  }

  private void CancelButtonPressed()
  {
    LoadData();
  }

Очевидно, что вы можете передавать свои данные через BindingSource.

...