C# 如何使用SqlAdapter.update更新表,其中不包含';我没有主键

C# 如何使用SqlAdapter.update更新表,其中不包含';我没有主键,c#,asp.net,asp.net-mvc,ado.net,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); 如果没有主键,您将无法依赖SqlComman

我正在使用
SqlDataAdapter
更新
DataRow

我有个例外

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

如果我将主键放入表中,错误就会出现

但我不想把主键放进去

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

如果没有主键,您将无法依赖SqlCommandBuilder为您生成插入/更新/删除命令

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

这可能有助于您开始:


编辑:如果没有主键,修改数据时必须非常小心。e、 g.当执行UPDATESQL时,意外地为DataRow更新表中超过一行的数据会容易得多。拥有主键将使事情变得更简单、更健壮

也要展示你的工作。如果它没有主键,它就不是一个真正的表-为什么你坚持要避免主键?这是任何好的数据库设计的最基本属性@marc_s:sql允许创建没有主键的表。这意味着这是一张真正的桌子。我正在写一个通用代码。所以我不知道这个表是否有主键。我不会使用泛型代码,因为这将很难解释。让您的主要习惯是始终为任何表定义主键!这是第一张数据库标准表单上第一张幻灯片的第一个要点——拥抱它@马克:我知道。但是我写的方法不能改变表的定义