C#,SQL Server:将带有时间戳列的UDT从C传递到存储过程中#

C#,SQL Server:将带有时间戳列的UDT从C传递到存储过程中#,c#,tsql,C#,Tsql,使用SQL Server 2019,我有一个存储过程,通过用户定义的表类型传入值。其中一列是时间戳表类型,用于行版本和数据并发控制 从C#我加载一个数据表作为UDT的参数传入,但是,我得到一个错误,说我不能写入时间戳 如何通过UDT将时间戳的值传递到存储过程中,在UDT中可以使用时间戳值与数据库中的时间戳值进行比较 以下是我的UDT: CREATE TYPE [dbo].[tvp_Eav_Value] AS TABLE( [EavVl_Id] [uniqueidentifier] NOT NUL

使用SQL Server 2019,我有一个存储过程,通过用户定义的表类型传入值。其中一列是时间戳表类型,用于行版本和数据并发控制

从C#我加载一个数据表作为UDT的参数传入,但是,我得到一个错误,说我不能写入时间戳

如何通过UDT将时间戳的值传递到存储过程中,在UDT中可以使用时间戳值与数据库中的时间戳值进行比较

以下是我的UDT:

CREATE TYPE [dbo].[tvp_Eav_Value] AS TABLE(
[EavVl_Id] [uniqueidentifier] NOT NULL,
[EavVl_EavEnt_Id] [uniqueidentifier] NOT NULL,
[EavVl_EavAt_Id] [uniqueidentifier] NOT NULL,
[EavVl_Value] [nvarchar](max) NULL,
[EavVl_LastModifiedUserId] [uniqueidentifier] NULL,
[EavVl_Stamp] [timestamp] NULL
)
这是我要传递的数据表:

DataTable dt = new DataTable();
dt.Columns.Add("EavVl_Id", typeof(Guid));
dt.Columns.Add("EavVl_EavEnt_Id", typeof(Guid));
dt.Columns.Add("EavVl_EavAt_Id", typeof(Guid));
dt.Columns.Add("EavVl_Value", typeof(string));
dt.Columns.Add("EavVl_LastModifiedUserId", typeof(Guid));
dt.Columns.Add("EavVl_Stamp", typeof(byte[]));

谢谢。

您是否尝试过使用
DateTime
而不是
字节[]
?您希望如何将
字节[]
转换为时间戳您不分配
时间戳的值;它由SQL Server控制。您不能。注意错误:不能通过任何方式在客户端设置
时间戳
(更好地命名为
行版本
)列。您不应该在表类型中有这样的列,因为您不能有意义地使用它;您可以使用
BINARY(8)
并根据需要将其转换为
ROWVERSION
,以进行比较。@Flydog57
timestamp
是一个二进制值;给它指定一个
datetime
是没有意义的。这能回答你的问题吗?