I found a solution for people who get an exception:
Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.
But, anyway I have question.
I read topic: Entity Framework: "Store update, insert, or delete statement affected an unexpected number of rows (0)." To VMAtm, Robert Harvey
In my case I had for example table articles:
Articles
------------
article_id
title
date_cr
date_mod
deleted
And I had trigger:
create trigger articles_instead_of_insert
on articles instead of insert
as
SET NOCOUNT ON;
insert into articles(
article_id,
title,
date_cr,
date_mod,
deleted
)
select
user_id,
title,
isnull(date_cr, {fn NOW()}),
isnull(date_mod, {fn NOW()}),
isnull(deleted, 0)
from inserted;
go
When I delete this trigger then I dont get this exception. So this trigger is problem. And now I have a question - Why? Should I do something?
Its better you update your save method like this..... In case you calling
savechange()
method of entity context after every addobject and deleteobject or modification :It's because you have
SET NOCOUNT ON
.The EF SQL Statement that it generates ALWAYS adds a clause of
where @@ROWCOUNT > 0 and [ID] = scope_identity()
(for example).Notice the
where @@ROWCOUNT > 0
clause. Take off yourSET NOCOUNT ON
statement and it should work.I had the same problem, this error message is a rather mystifying one. The answer from webtrifusion helped me. See Entity Framework: "Store update, insert, or delete statement affected an unexpected number of rows (0)."
It turns out I forgot to add "Id:0" in the JSON on the client side.
Possible Problem: You placed a ReadOnlyAttribute in you entity key's metadata, which causes its value to become zero
Solution: Remove the ReadOnlyAttribute
Using Entity Framework Code first,
using (MyDbContext db = new MyDbContext ( )) {..
Adding this after the using line:
Solution: