存储更新,插入或删除语句会影响意外的>行数(0)

时间:2016-06-12 07:28:55

标签: sql asp.net sql-server entity-framework triggers

我正在创建WCF restful Services,当我尝试通过实体框架将记录添加到我的数据库中时,我得到了这个例外:

  

存储更新,插入或删除语句会影响意外   行数(0)。自那以后,实体可能已被修改或删除   实体已加载。

我在我的数据库中创建了一个触发器:

GO
CREATE TRIGGER [dbo].[Trigger_groupLocation_date]
    ON [dbo].[groupLocation]
    INSTEAD OF INSERT
    AS
    BEGIN
        SET NoCount ON
        DECLARE @s int
        DECLARE @g_id int
        DECLARE @lat float
        DECLARE @lon float
        SELECT @s = sender FROM inserted
        SELECT @g_id = g_id FROM inserted
        SELECT @lat = latitude FROM inserted
        SELECT @lon = longitude FROM inserted

        insert into [groupLocation] (sender,g_id,latitude,longitude) values(@s,@g_id,@lat,@lon)
    END

需要注意的一点是,我可以将记录直接添加到数据库中。我从here读了一些关于异常的细节,经过一些研究后,我在stackoverflow上发现了一个similar问题。但在尝试解决方案时,我读到DbContext没有Refresh()方法,所以我尝试了:

var ctx = ((IObjectContextAdapter)db).ObjectContext;
ctx.Refresh();

但我仍然得到同样的例外。然后我阅读here,只有当你使用代码优先方法然后这个工作可以工作,我使用“EF设计师从数据库方法”。如何在数据优先方法中访问Refresh方法?

1 个答案:

答案 0 :(得分:3)

尝试在触发器 AFTER 插入内添加此行SQL代码:

select g_id from [groupLocation] where @@ROWCOUNT > 0 and g_id = scope_identity();

我认为g_id是您的标识列,如果没有将上述语句中g_id的出现替换为标识列。

另请阅读此问题 - Error when inserting into table having instead of trigger from entity data framework