2

我正在使用 BindingList 在 Windows 窗体应用程序的 DataGridView 中显示 Person 对象列表。对 DataGridView 的更改会更改基础 BindingList。我已经让这部分工作了。

现在我希望将列表持久化到数据库表中。从数据库中读取列表并填充人员列表很简单,但是如果我从 DataGridView 添加/编辑/删除一个人,我如何以及何时将该更改持久化回数据库?

(其次,这种方法可以吗?还是我错过了一些更大的图景?我不想使用数据表,因为我想以抽象的面向对象的方式处理我的代码。)

4

1 回答 1

1

为了在 Windows 窗体中轻松持久化对象,您可以使用LINQ2SQL,它完全符合您的要求,并且当您想从数据库中收集对象时,它还会具体化对象。

快速示例,在为支持的数据库(即 SQL Server (Express))从数据库模式创建 linq 上下文后,您只需在表单中创建它的实例,并在对数据进行单原子操作时使用它 - 读取、编辑、写入或取消。

  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 传递数据。

于 2011-01-11T00:20:55.160 回答