我的数据库中有一个Student
表和一堆其他表名为University
,我在winforms应用程序中使用Entity Framework连接到它。
我在Entity Framework模型中的DataSource
表中创建了一个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();
}
答案 0 :(得分:1)
我知道这是一个老线程,但是我遇到了同样的问题而没有回答。
这一行破坏了DataSource与上下文的连接:
studentBindingSource.DataSource = UE.Students.ToList();
将其更改为:
studentBindingSource.DataSource = UE.Students;
但它抛出异常,所以我只是将它绑定到本地数据:
studentBindingSource.DataSource = UE.Students.Local;
此外,您需要确保在绑定之前填充了本地数据。
答案 1 :(得分:0)
请定义“它不起作用”。数据是否至少被推送到底层实体?
我记得那些“轻量级”工具栏按钮存在一些问题,因为它们不会导致焦点丢失,因此数据网格上没有发生验证。
在您调用UE.SaveChanges()之前,尝试执行以下操作强制验证:
this.Validate();
希望这有帮助