每当我在上下文中执行Object时,我遇到了执行并发异常的问题
我有这个:(我在webforms btw上使用它)
using(entities ctx = new entities()){
EventModel newEvent = new EventModel{
Name = "name",
Description = "description",
CreationDate = DateTime.Now,
CreatedBy = CurrentUserId()
};
try{
ctx.EventModels.AddObject(newEvent);
ctx.SaveChanges();
}catch(OptimisticConcurrencyException ocex){
if(ctx.ObjectStateManager.GetObjectStateEntry(newEvent).State == EntityState.Added){
// proves that it is added.
}
}catch(Exception ex){
throw ex;
}
}
我现在不确定在哪里看。我尝试过sql profiler,我唯一注意到的是它试图插入新实例两次。而已。没有错误或类似的东西。
思想?
BTW:这是我得到的错误
存储更新,插入或删除语句会影响意外 行数(0)。自那以后,实体可能已被修改或删除 实体已加载。刷新ObjectStateManager条目。
编辑:这是在探查器上执行的sql。相同的sql执行了两次。
exec sp_executesql N'insert [dbo].[EventModel]([Name], [Description], [CreationDate], [CreatedBy]) values (@0, @1, @2, @3)', @0="Name", @1="description", @2="2013-01-31 11:41:41.5231006", @3="1"
答案 0 :(得分:2)
解决了这个问题。这是因为桌子上的触发器。当你执行一个addobject时,实体框架需要一个Id,如果它没有得到那个Id,它认为它是一个由两个实例修改的更新,然后会抛出该错误。