Привязка коллекций Entity Framework к ListBox для отражения изменений - PullRequest
0 голосов
/ 02 августа 2010

Я использую классы Entity Framework для внесения изменений в мою базу данных следующим образом:

testEntities.Products.AddObject (product);

У меня есть ListBox, связанный с testEntities.Products и показывает их правильно, но когда я добавляю новый объект и сохраняю изменения (testEntities.SaveChanges ()), продукт появляется в базе данных, но ListBox не обновляется.

Iдействительно хотелось бы, чтобы эти коллекции объектов из EF были бы "наблюдаемыми".Есть ли простой способ добиться этого?

Большое спасибо!

(я использую VS.NET 2010)

1 Ответ

0 голосов
/ 03 августа 2010

Всего в нескольких шагах. Старайтесь не использовать декларативный источник данных, а вместо этого запрос.
В этом случае вы получаете большую гибкость и полный контроль над процессом связывания данных. Вот небольшой образец:

    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 и просто вызывать этот метод, когда вам нужно обновить список в коде. Это будет удобно также, если у вас есть набор этих списков и другие элементы управления, связанные с данными.

...