2010-08-02 2 views
0

Я использую классы Entity Framework, чтобы внести изменения в базу данных, как это:Entity Framework коллекции связывания с ListBox, чтобы отразить изменения

testEntities.Products.AddObject (продукт);

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

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

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

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

+0

Возможный дубликат [Databind ADO.NET Entity Framework для ListBox] (http://stackoverflow.com/questions/3516916/databind-ado-net-entity-framework-to-listbox) – takrl

ответ

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

+0

Спасибо! Я попробую. Кстати, есть ли некоторые изменения в .NET Framework 4.0 для этого? Я прошу вас об этом, потому что я видел, что вы используете context.AddToX вместо объектов .X.AddObject(). Первый из них устарел, я думаю (контекстная помощь мне это сказала). – SuperJMN

+0

Вы можете использовать context.MASTER.AddObject вместо context.AddToMASTER, это подход EF v4. – Devart

+0

К сожалению, нам не известен какой-либо декларативный способ. – Devart