是否可以在EF 6中的INSERT生成语句中替换SELECT SCOPE_INDENTITY()?

时间:2014-08-13 14:08:06

标签: c# sql sql-server entity-framework

我在SQL Server中的一个表中定义了一个WaitOfInsert触发器,我无法修改它。 EF 6将生成正确的

INSERT [SomeTable] ([SomeColumns]) VALUES (SomeValues)
SELECT [SomeIdenityColumn], [ROWID]
FROM [SomeTable]
WHERE @@ROWCOUNT > 0 AND [SomeIdenityColumn] = scope_identity()

但是这个调用失败了,因为当从NextOfInsert触发器出来时,scope_identity()为null,我无法修改。在EF 6中是否有任何方法可以修改生成的SQL以使用OUTPUT Inserted方法?

更新

在SO上找到这两个:

OptimisticConcurrencyException -- SQL 2008 R2 Instead of Insert Trigger with Entity Framework

error when inserting into table having instead of trigger from entity data framework

更新2 - 非常糟糕的新闻

所以我使用SSMS修改了生成的SQL代码,试图利用INSERT INTO OUTPUT。

INSERT INTO [SomeTable] ([SomeColumns]) 
OUTPUT Inserted.[SomeIdenityColumn], Inserted.[ROWID]
VALUES (SomeValues)

从SSMS执行时出现此错误:

  

消息334,级别16,状态1,行41目标表   ' AuMine.QUOTE_STAFF_ACTIVITY' DML语句不能有任何   如果语句包含OUTPUT子句,则启用触发器   INTO条款。

经典捕获22 ..

0 个答案:

没有答案