谁能告诉我为什么在为强类型 DataTable 中的列分配值时会出现 StrongTypingException?(我明白如果我要读取带有 DBNull 值的列,为什么会得到它)
在下面的示例中,我尝试将一个值从一个 DataTable 分配给另一个(示例中的所有列都是Int32类型)。我可以为“newOrderRow.items”列分配一个值,但是当我对“newOrderRow.debcode”列执行相同操作时,会引发异常!为什么?!
到目前为止我尝试过的一些事情(没有任何运气):
- 分配硬编码值而不是 'calclineRow.debcode'
- 在分配另一个值之前调用 newOrderRow.SetdebcodeNull()
- 更改了 'debcode' 列中的 DefaultValue 属性orderrows 的表从 DBNull 到 -1,它仍然抛出异常并说它是 DBNull !
myDataSet.orderrowsRow newOrderRow;
foreach (MyDataSet.calclinesRow calclineRow in myDataSet.calclines)
{
newOrderRow = myDataSet.orderrows.NeworderrowsRow(); //Create new 'orderrows' row
//Assign values from one DataTable to another
if (!calclineRow.IsitemsNull())
newOrderRow.items = calclineRow.items; //calclineRow.items == 1. Assignment successful
if (!calclineRow.IsdebcodeNull())
newOrderRow.debcode = calclineRow.debcode; //calclineRow.debcode == 556. Assignment raises System.Data.StrongTypingException ! (See message below)
myDataSet.orderrows.AddorderrowsRow(newOrderRow);
}
/*Exception Message:
=====================
System.Data.StrongTypingException: The value for column 'debcode' in table 'orderrows' is DBNull.
---> System.InvalidCastException: Specified cast is not valid.
at MyProject.MyDataSet.orderrowsRow.get_debcode() in Q:\MyProjFolder\DataSets\MyDataSet.Designer.cs:line 21680
*/