实体框架 - 乐观并发问题

Cra*_*rge 4 concurrency entity entity-framework

我有一个每10秒运行一次的Windows服务...每次运行时,它会获取一些测试数据,修改它并使用EntityFramework将其持久保存到数据库中.但是,在每次运行时,当我尝试持久化更改时,我会得到以下乐观并发异常: -

存储更新,插入或删除语句会影响意外的行数(0).自实体加载后,实体可能已被修改或删除.刷新ObjectStateManager条目

我知道一个事实是没有其他任何东西写入该数据库但我的服务每10秒更新一次记录.什么可能导致并发异常?

我认为对象图中的某个相关实体在第二次保存操作之前被修改了.我所做的只是实例化一个新的对象上下文,并在我使用相同的上下文检索的一些记录上调用保存操作.以下代码工作---

var ctx = new blahEntities();
var profile = ctx.ProfileSet.Where(pr=>pr.FirstName.Contains("a")).FirstOrDefault();
profile.Address = "modified";
ctx.SaveChanges();
ctx.Refresh(RefreshMode.StoreWins,profile);
Run Code Online (Sandbox Code Playgroud)

Nix*_*Nix 6

"意外行数(0)"表示您很可能没有在实体模型中正确映射或定义ID字段,或者您正在修改分离的实体并尝试保存它并且它没有关键信息.

运行SQL Server探查器或Entity Framework Profiler,并查看后台发生的情况.