C# SqlCommandBuilder和SQL Server计算列-错误

C# SqlCommandBuilder和SQL Server计算列-错误,c#,.net,ado.net,sqldataadapter,sqlcommandbuilder,C#,.net,Ado.net,Sqldataadapter,Sqlcommandbuilder,当用于选择的SQL语句将计算列作为返回字段之一时,使用SqlDataAdapter/SqlCommandbuilder进行插入和更新时,如何避免错误 现在我得到了一个错误,即“无法修改列数量,因为它要么是计算列,要么是UNION运算符的结果” 更新: 我使用如下查询解决了此问题: SELECT *, PercentRating * 500 AS CoreValue FROM ValueListings 以及将计算列挖沟。 现在它起作用了。SqlCommandBuilder如何实现不将CoreV

当用于选择的SQL语句将计算列作为返回字段之一时,使用SqlDataAdapter/SqlCommandbuilder进行插入和更新时,如何避免错误

现在我得到了一个错误,即“无法修改列数量,因为它要么是计算列,要么是UNION运算符的结果”

更新: 我使用如下查询解决了此问题:

SELECT *, PercentRating * 500 AS CoreValue FROM ValueListings
以及将计算列挖沟。
现在它起作用了。SqlCommandBuilder如何实现不将CoreValue字段构建到UPDATE和INSERT语句中?有人知道这是怎么运作的吗

如果你能避免使用*的话,以后会省去你的麻烦。使用*如果更改架构,代码可能会中断。如果指定了字段,则说明您很好。

使用以下句子:

从ValueListings中选择*

然后在填充数据表后,向其添加一个计算列:

  Dim Dt as new DataTable
  Da.Fill(Dt)
  Dt.columns.add("CoreValue", GetType(Double), "PercentRating * 500")

好消息与您的修复,羞耻您使用可怕的选择星通知!select*符号有什么问题?我试图使SQL保持简单,因为这些语句嵌入在DSL中。使用select*的问题在于,它可能会影响性能,具体取决于此表的记录数和列数。例如,如果一个包含8列的表中只需要3列,则最好调用select column1、column2、column3而不是select*,因为它将返回大量您不需要的数据。但我需要所有列!所以我仍然对查基的话感到困惑。