通过DataGrid在DataTable中插入新行时更新主键

时间:2013-11-27 00:09:02

标签: c# mysql wpf wpfdatagrid dataadapter

我使用以下C#代码绑定到DataAdapter的DataTable:

MySQLConnection conn = ...

string sql = "SELECT ...";
adapter = new MySqlDataAdapter(sql, conn);
adapter.Fill(this); // this is the DataTable used by the grid

MySqlCommandBuilder builder = new MySqlCommandBuilder(adapter);
// here the adapter.UpdateCommand/.InsertCommand/.DeleteCommand code

RowChanged += LyricsDataTable_RowModified;
RowDeleted += LyricsDataTable_RowModified;
TableNewRow += LyricsDataTable_TableNewRow;

然后,DataGrid使用dataTable.AsDataView()作为ItemsSource属性的值。

在事件处理程序方法中使用adapter.Update(this);更新或插入行可以正常工作。

插入后,我想更新DataTable中的主键。

实现这一目标的最佳方法是什么(我可以调用SELECT LAST_INSERT_ID,但我想有更好的DAO方法来获取此信息)?

1 个答案:

答案 0 :(得分:0)

在我们的产品中,我们有一个通用API,它插入一个数据契约(在您的案例数据表中),并使用It的主键和MSrowversion返回插入的数据契约。每次触摸此行时,我们的MSRowVersion都会更新。 您可能需要这样做。每次插入/更新时,都会返回更新的行。 如果你有时间尝试创建自己的DAL助手。

另一种简单的方法是使用.Net Entity Framework。使用EF插入/更新时,默认情况下返回最新的行。它是ORM,它非常易于使用,但只有我能说的才能与SQL服务器一起使用。 请检查此question