在Datatable中添加Timestamp列

时间:2011-12-07 02:15:39

标签: c# linq linq-to-sql ado.net user-defined-types

我有一个存储过程,它将用户定义的表类型(UDTT)作为参数之一,现在我需要从我的C#代码中调用这个存储过程。

我已经创建了一个dbml文件和一个在数据库中模拟我的UDTT的类。

现在的问题是,有一个名为Version的列,其类型为TIMESTAMP,存在于UDTT存储过程中。

这是我用户定义的表类型的结构:

CREATE TYPE dbo.sampletype as
ID INT NULL,
Name String NULL,
Version TIMESTAMP NULL

现在我需要通过C#代码传递UDTT,因此我创建了DataTable并添加了列版本 类型为byte[]。我将值发送为NULL

现在,当我使用经典ADO.net(使用cmdparameters,SqlExecuteReader)调用存储过程时,我得到以下错误..

Cannot insert value to timestamp column.

2 个答案:

答案 0 :(得分:1)

TIMESTAMP数据类型的值由SQL Server自动生成;你不能插入它们。

答案 1 :(得分:0)

检查here SQL类型和CLR类型之间的映射。我想您应该尝试将TIMESTAMP更改为DATETIME2