标识列在ADO.NET中引起的问题

类别:.NET开发 点击:0 评论:0 推荐:

假设只有2列的一个简单表UserTable:
  UserID:  int, IDENTITY (1, 1), NOT NULL
  UserName: varchar(10)
请大家想象下列情景:
 1.当填充DataSet时该表的@@IDENTITY=50
 2.其它程序操作UsetTable而使UserTable的@@IDENTITY=53
 3.向DataSet中插入一条新的记录,此时ADO.net会默认UserID=51.
 4.按照MSDN上推荐的方法刷新数据集:
      DataSet changed=dataset.GetChanges();
      m_Adpter.update(changed);
     dataset.merge(changed);
这时,数据集中就莫名其妙的出现两条记录,一条UserID=51,一条UserID=54.其它字段均相同。
其原因是:
    数据集changed中所包含的UserID=51的记录在执行完m_Adpter的InsertCommand后,UserID变成54,将其合并到dataset时,该行作为行添加,而不是去更改UserID=51的行。


本文地址:http://com.8s8s.com/it/it42386.htm