如何通过BindingNavigator插入,更新和删除DataGridView的记录到DataBase

时间:2013-12-31 13:47:22

标签: c# entity-framework data-binding datagridview

我的数据库中有一个Student表和一堆其他表名为University,我在winforms应用程序中使用Entity Framework连接到它。 My Entity Framework model

我在Entity Framework模型中的DataSource表中创建了一个StudentMy Data Source

然后我将DataSource拖到我的表格上。(见下图) 我知道如何将student表的记录(这里只是我的数据库中的一条记录)填充到DataGridView中,使用这段代码没有问题:

//An instance of my EFModel
    Oublic UniversityEntities UE = new UniversityEntities();
 private void Form1_Load_1(object sender, EventArgs e)
    {
        studentBindingSource.DataSource = UE.Students.ToList();
    }

My Form

但我想使用BindingNavigator从/向数据库插入/更新/删除记录,并且我不知道它是如何可能的,考虑到我使用实体框架。

例如,我尝试在编辑一行后保存更改,但它不起作用:

 private void studentBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        UE.SaveChanges();
    }

2 个答案:

答案 0 :(得分:1)

我知道这是一个老线程,但是我遇到了同样的问题而没有回答。

这一行破坏了DataSource与上下文的连接:

studentBindingSource.DataSource = UE.Students.ToList();

将其更改为:

studentBindingSource.DataSource = UE.Students;

但它抛出异常,所以我只是将它绑定到本地数据:

studentBindingSource.DataSource = UE.Students.Local;

此外,您需要确保在绑定之前填充了本地数据。

答案 1 :(得分:0)

请定义“它不起作用”。数据是否至少被推送到底层实体?

我记得那些“轻量级”工具栏按钮存在一些问题,因为它们不会导致焦点丢失,因此数据网格上没有发生验证。

在您调用UE.SaveChanges()之前,尝试执行以下操作强制验证:

this.Validate();

希望这有帮助