Linq to sql timestamp列总是返回

时间:2011-10-17 11:35:34

标签: linq-to-sql

我有一个DBML,其类包含sql中的timestamp列。

DBML中的属性声明为:(仅指定此处指定的相关字段)

自动生成的值:true 名称:时间戳 Nullable:false 服务器数据类型:rowversion NOT NULL 来源:时间戳 时间戳:是的 类型:二进制 更新检查:从不

在我的逻辑中,我插入此表。但是,我很惊讶地发现生成的sql看起来像这样:

exec sp_executesql N'INSERT INTO [dbo].Foo( /* elided */)
VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15, @p16, @p17, @p18, @p19, @p20, @p21, @p22, @p23, @p24, @p25)

SELECT [t0].[Timestamp]
FROM [dbo].[Foo] AS [t0]
WHERE [t0].[Id] = @p26', /* elided */

我想摆脱那个SELECT语句 - 我不使用结果。

这是可能的,还是强制要求对象跟踪,datacontext必须知道该新记录的时间戳是什么?

我意识到我可以切换到使用SP作为插入方法,但我更愿意避免这种情况。

1 个答案:

答案 0 :(得分:1)

在并发检查中为任何后续更新/删除子句更新自身更新时对象的本地实例使用的附加选择是必需的。由于每次更改/插入行时都会更新RowVersion(TimeStamp)值,因此客户端需要新版本,否则后续更新将失败,因为时间戳值将不再相同。