Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过BindingNavigator向数据库插入、更新和删除DataGridView的记录_C#_Entity Framework_Data Binding_Datagridview - Fatal编程技术网

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;

您还需要确保在绑定之前已填充本地数据。

我的意思是数据库中没有更新或删除任何内容。后来,我发现了关于“聚焦”的问题,我解决了这个问题。现在更新一行工作正常,但仍然无法插入新行或删除任何行。