我在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 ..