实体框架集合绑定到ListBox以反映更改

时间:2010-08-02 10:41:26

标签: listbox frameworks entity observablecollection

我正在使用Entity Framework类对我的数据库进行更改,如下所示:

testEntities.Products.AddObject(产品);

我有一个ListBox绑定到testEntities.Products并且它正确显示它们,但是当我添加一个新对象并保存更改(testEntities.SaveChanges())时,产品出现在数据库中,但是ListBox没有更新。

我真的希望来自EF的那些对象集合是“可观察的”。有没有一种简单的方法来实现这一目标?

非常感谢!

(我正在使用VS.NET 2010)

1 个答案:

答案 0 :(得分:0)

只需一步之遥。尽量不要使用声明性DataSource,而是使用查询。
在这种情况下,您可以更好地灵活地控制数据绑定过程。这是一个小样本:

    private void Form1_Load (object sender, EventArgs e) {
      listBox1.DataSource = context.MASTER.Select(m => m.DATA);
    }

    private void button1_Click (object sender, EventArgs e) {
      context.AddToMASTER(new MASTER
      {
        ID = 5,
        DATA = "5"
      });
      context.SaveChanges();
      listBox1.DataSource = context.MASTER.Select(m => m.DATA);
    }

您还可以将查询代码放入单独的RefreshList方法中,并在需要刷新代码中的列表时调用此方法。如果你有一组这些列表框和其他数据绑定控件,这也很方便。