如何使用没有主键的SqlAdapter.Update更新表

时间:2015-02-04 13:12:58

标签: c# asp.net asp.net-mvc ado.net

我正在SqlDataAdapter正在更新DataRow

我得到了异常

  

对于不返回任何键列信息的SelectCommand,不支持UpdateCommand的动态SQL生成

如果我将主键放在表格中,则会出错。

但我不想把主键放进去。

var dataAdapter = new SqlDataAdapter();
var updatedRows = Getting some row ...
dataAdapter.Update(updatedRows);

1 个答案:

答案 0 :(得分:1)

如果没有主键,您将无法依赖SqlCommandBuilder为您生成insert / update / delete命令。

如果您仍想使用SqlDataAdapter修改数据,则需要显式设置适配器的InsertCommand,UpdateCommand,DeleteCommand属性。

这可能有助于您入门: https://msdn.microsoft.com/en-us/library/ms971491.aspx

编辑:没有主键,在修改数据时你必须非常小心。例如当执行UPDATE sql时,更容易意外地为DataRow更新表的1行以上。拥有主键将使事情变得更容易,更健壮。