我使用以下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方法来获取此信息)?
答案 0 :(得分:0)
在我们的产品中,我们有一个通用API,它插入一个数据契约(在您的案例数据表中),并使用It的主键和MSrowversion返回插入的数据契约。每次触摸此行时,我们的MSRowVersion都会更新。 您可能需要这样做。每次插入/更新时,都会返回更新的行。 如果你有时间尝试创建自己的DAL助手。
另一种简单的方法是使用.Net Entity Framework。使用EF插入/更新时,默认情况下返回最新的行。它是ORM,它非常易于使用,但只有我能说的才能与SQL服务器一起使用。 请检查此question