2013-11-27 87 views
0

我有一个DataTable绑定到一个DataAdapter与下面的C#代码:更新主键

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中的主键。

什么是最好的方式来实现这一点(以及我可以callk SELECT LAST_INSERT_ID,但我想有一个更好的DAO方式来获取这些信息)?

回答

0

在我们的产品,我们有插入数据合同(在你的情况下,数据表)的通用API,并返回插入的数据合同长期与它的主键和MSrowversion。每次我们触摸这一行时,我们的MSRowVersion都会更新。 您可能需要执行相同的操作。每次插入/更新时,都会返回更新的行。 如果您有时间尝试创建自己的DAL助手。

另一个简单的方法就是使用.Net Entity Framework。当您使用EF插入/更新时,它会默认返回最新的行。它的ORM,这是非常非常容易使用,但它只是据我可以告诉工作与SQL服务器。 选中此question