当这是附加的触发器时,Linq-to-sql在插入和更新时失败

And*_*ome 11 sql-server linq-to-sql

我最近遇到了linq-to-sql的一些问题.问题是,当我们有一个附加到事件的触发器时,它"认为"它在插入和更新时失败.一个示例可以是一行,其中附加了一个触发器,以便在更改行时将"LastUpdated"冒号设置为当前时间.这将导致linq-to-sql认为在更新或插入时失败,但这只是有时候,因为它有时会通过,我认为这是当sql服务器负载很重的时候因此不能在进行验证之前执行触发器,这只是猜测.因为我的脚本只是一个更大的脚本的一部分,所以禁用触发器不是一个选项,所以我需要找到一个解决方案,或重写我的程序.您是否遇到过这个问题并找到了解决方案,例如在插入后禁用验证?

触发.

USE [cnhha]
GO
/****** Object:  Trigger [dbo].[LastUpdated]    Script Date: 05/12/2011 16:26:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[LastUpdated] ON [dbo].[CN_User] 
FOR INSERT, UPDATE
AS

update cn_user set lastupdated=getdate() where campusnetuserid in (select campusnetuserid from inserted)
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 8

您可能需要SET NOCOUNT ON在触发器中

除了在我的问题"SET NOCOUNT ON usage"中提到的狭义情况(SQLDataAdapter),它是大多数客户端代码所必需的

如果您能够更改客户端UPDATE以使用DEFAULT关键字,也可以删除触发器

update cn_user
set col1 = this, col2 = that,...,
    lastupdated= DEFAULT
where ...
Run Code Online (Sandbox Code Playgroud)