C# 如何通过BindingNavigator向数据库插入、更新和删除DataGridView的记录
我的数据库中有一个C# 如何通过BindingNavigator向数据库插入、更新和删除DataGridView的记录,c#,entity-framework,data-binding,datagridview,C#,Entity Framework,Data Binding,Datagridview,我的数据库中有一个Student表和一堆其他表,名为University,我在winforms应用程序中使用实体框架连接到它。 我从实体框架模型中的Student表创建了一个DataSource。 然后我将数据源拖到我的表单上(见下图) 我知道如何将student表的记录(我的数据库中只有一条记录)填充到DataGridView,使用这段代码没有问题: //An instance of my EFModel Oublic UniversityEntities UE = new Uni
Student
表和一堆其他表,名为University
,我在winforms应用程序中使用实体框架连接到它。
我从实体框架模型中的Student
表创建了一个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();
}
但是我想使用BindingNavigator
在数据库中插入/更新/删除记录,考虑到我使用的是实体框架,我不知道这是怎么可能的
例如,我尝试在编辑行后保存更改,但没有成功:
private void studentBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
UE.SaveChanges();
}
请定义“它不起作用”。数据是否至少被推送到底层实体
我记得那些“轻量级”工具栏按钮有一些问题,原因是它们不会导致焦点丢失,因此在datagrid上没有进行验证
在调用UE.SaveChanges()之前,尝试通过执行以下操作强制验证:
this.Validate();
希望这有帮助我知道这是一条老线索,但我遇到了同样的问题,这里没有答案 此行正在断开数据源与上下文的连接:
studentBindingSource.DataSource = UE.Students.ToList();
将其更改为:
studentBindingSource.DataSource = UE.Students;
但它抛出了一个异常,所以我只将其绑定到本地数据:
studentBindingSource.DataSource = UE.Students.Local;
您还需要确保在绑定之前已填充本地数据。我的意思是数据库中没有更新或删除任何内容。后来,我发现了关于“聚焦”的问题,我解决了这个问题。现在更新一行工作正常,但仍然无法插入新行或删除任何行。