Здравствуйте. Есть программа на win формах. На форме dataGridView. Используется база данных mssql. Модель базы создана с помощью code first. Вот мой класс(таблица):
class Systems
{
public int SystemsId { get; set; }
public string Name { get; set; }
public virtual ICollection<Users> Users { get; set; }
}
Вот как я добавляю в него данные.
private void button1_Click(object sender, EventArgs e)
{
using (Context db = new Context())
{
Systems system1 = new Systems { Name = "Система 5"};
db.System.Add(system1);
db.SaveChanges();
this.systemsTableAdapter.Fill(this.myDbDataSet.Systems);
}
}
Строчка this.systemsTableAdapter.Fill(this.myDbDataSet.Systems);
должна обновлять гриду после добавления. Но этого не происходит. Что я делаю не так? Подскажите пожалуйста.
Результат:
private void Form1_Load(object sender, EventArgs e)
{
using (Context db = new Context())
{
dataGridView1.DataSource = db.System.ToList();
dataGridView1.Refresh();
}
}
private void button1_Click(object sender, EventArgs e)
{
using (Context db = new Context())
{
Systems system1 = new Systems { Name = "Система 7"};
db.System.Add(system1);
db.SaveChanges();
dataGridView1.DataSource = db.System.ToList();
dataGridView1.Refresh();
}
}
Тут у вас перемешка ADO и Entity, что в данном контексте не самое лучшее. Каким образом у вас строится связь с datagridview? Если через dbDataAdapter, то зачем? Это же Entity, а не Ado. Достаточно было бы привязать напрямую к списку System:
List<System> lst = db.System.ToList();
dataGridView.DataSource = lst;
При изменении System делай Refresh или Update dataGridView:
using (Context db = new Context())
{
Systems system1 = new Systems { Name = "Система 5"};
db.System.Add(system1);
db.SaveChanges();
dataGridView.Refresh();
}
P.S. System - очень плохое имя для таблицы(да и вообще для чего либо), т.к. пространство имен уже зарезервировано с этим именем в C#. Если по контексту таблица связана с какими то системами, то лучше что то дописать. GameSystem, PictureSystem и т.д.
Попробуй так:
BindingList<System> lst;
private void Form1_Load(object sender, EventArgs e)
{
using (Context db = new Context())
{
List<System> dbList = db.System.ToList();
lst = new BindingList<System>(dbList);
dataGridView1.DataSource = lst;
dataGridView1.Refresh();
}
}
private void button1_Click(object sender, EventArgs e)
{
using (Context db = new Context())
{
Systems system1 = new Systems { Name = "Система 7"};
db.System.Add(system1);
db.SaveChanges();
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня возникла проблема с выполнением асинхронных запросов к базу данных при использовании Entity FrameworkКогда я пытаюсь получить какое - либо...
Имеется nullable переменная, к которой требуется доступ из разных потоковНапример, int?
Есть один сетевой адаптер, мне нужно узнать его локальный IPv6, для отправки запросов с сокета (сокет в режиме DualMode) через этот IP