我正在创建WCF REST风格的服务,当我尝试通过实体框架添加记录到我的数据库我得到这个异常:商店更新,插入或删除语句影响行的意外>数(0)
存储更新,插入或删除语句影响意外 行数(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没有刷新()方法,取而代之的是解决方案,我试过:
var ctx = ((IObjectContextAdapter)db).ObjectContext;
ctx.Refresh();
但我仍然得到同样的异常。然后,我读here,只有当你使用代码第一的方法,然后这个工作可以工作,我使用“EF设计师从数据库的方法”。如何在数据优先方法中访问Refresh方法?
了一段时间,你可以发表评论扳机,然后尝试现在抛出,有什么异常。因为EF可能不允许同时进行其他更改 –
如果我注释掉触发器,则服务运行顺利,并且不会抛出异常。 –