【发布时间】:2012-08-03 06:42:05
【问题描述】:
我有一个非常简单的带有实体框架的窗体项目。
我只是从“表单”中的“数据源”选项卡中拖动表格,它为我生成了一个“DataGridView”和一个“BindingSource”。
数据绑定成功,当我运行项目时,我可以看到“DataGridView”正确填充了数据,并且可以从“DataGridView”更新任何单元格值。
问题是我无法在“DataGridView”中插入任何行。
这是我写的一些代码,希望对解决问题有用:
Teachers_DBEntities context = new Teachers_DBEntities();
private void SaveItem_Click(object sender, EventArgs e)
{
context.SaveChanges();
MessageBox.Show("saved successfully");
}
private void Form1_Load(object sender, EventArgs e)
{
teachers_tableBindingSource.DataSource = context.teachers_table.ToList();
}
为 cmets 更新
我测试了我的“BindingSource”,发现它成功理解了是否在“DataGridVeiw”中插入了新记录,但是当我调用context.savechanges();时,更改不会应用到数据库中
context.savechanges() 在我更新单元格时工作正常,但当我尝试在“DataGridView”中插入新记录时它不起作用。
在我的 edmx 文件中,我正确映射了所有列,主键 StoreGeneretedPattern 属性设置为 Identity,其 Entity Key 属性设置为 true。我的 SQL Server 数据库文件中的 auto-increment 属性设置为 true。
感谢任何帮助。
【问题讨论】:
-
您确定对象的身份 (pk) 尚未在数据库中吗?可以用 AddObject 等添加完整的代码吗?
-
谢谢博阿斯的回复。我的 (pk) 是自动递增的,我没有为它输入任何值。我尝试使用 AddObject 在数据库中插入值,但问题是在“DataGridView”中添加新行完成时我不知道如何理解。
-
你的桌子是空的吗?你已经用空桌子试过了吗?
-
并且可以在保存更改之前检查验证错误吗?
-
博阿斯,我更新了我的问题,并在其中回答了你的问题。
标签: c# .net entity-framework datagridview ado.net