我在mysql数据库中创建了两个表(FIRSTtable和SECONDtable)和两个相关的表。
FIRST表有一列(product_id(pK),product_name)。 SECOND表有一列(machine_id,production_date,product_id(fK), product_quantity,operator_id)。
使用带有UpdateCascade和DeleteCascade的product_id列的两个表之间的关系。当我尝试使用sql脚本时,两种关系都正常运行。假设我删除了FIRST表中的所有product_id,将删除SECOND表中的所有现有数据。
这两个表都显示在datagridview中。当我删除FIRST表中的所有数据时,将删除datagridview FIRST表中的所有行,同时删除FIRST表中mysql中的数据。
我尝试打开mysql数据库,数据在SECOND表中也被删除,问题为什么在第二个datagridview中查看,无法删除,仍保留以前的数据?如何在vb.net或C#中刷新datagridview绑定?感谢。 With Me.SECOND_DataGridView
.Datasource = Nothing ' tried this, but failed.
.DataSource = MyDataset.Tables("SECOND_table")
End With
答案 0 :(得分:2)
我相信你遇到的是MySQL引擎实际上为你执行级联删除的事实。
当您将MySQL数据查询到本地化的C#“DataTable”(DataSet中的表)时,该数据现在位于内存中,而不是直接链接到磁盘上的数据。当你去删除第一个数据表的“内存”版本中的行时,它会导致删除发生在第二级表的SERVER上,而不是直接更新数据表的内存版本。
话虽这么说,你可能不得不做两件事之一......重新查询整个数据集(第一和第二表)以完全刷新实际数据库中的STILL ...或者......当您从数据集的第一个表中调用删除时,您必须在本地数据表TWO中执行删除处理以使其保持同步。