我收到此错误:
类型的例外 ' System.Data.Entity.Infrastructure.DbUpdateConcurrencyException' 发生在EntityFramework.dll中但未在用户代码中处理
其他信息:存储更新,插入或删除语句 影响了意外的行数(0)。实体可能已经存在 自实体加载后修改或删除。刷新 ObjectStateManager条目。
dbContext.Productos.Add(producto);
dbContext.Entry(producto).State = System.Data.Entity.EntityState.Modified;
dbContext.SaveChanges();
}
关于这里有什么问题的任何想法?
感谢。
我的堆栈跟踪是:
[OptimisticConcurrencyException: 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.]
System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.ValidateRowsAffected(Int64 rowsAffected, UpdateCommand source) +232
System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update() +493
System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.<Update>b__2(UpdateTranslator ut) +32
System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update(T noChangesResult, Func`2 updateFunction) +272
System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update() +143
System.Data.Entity.Core.Objects.ObjectContext.<SaveChangesToStore>b__35() +34
System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction(Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) +448
System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction) +219
System.Data.Entity.Core.Objects.<>c__DisplayClass2a.<SaveChangesInternal>b__27() +71
System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Func`1 operation) +213
System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(SaveOptions options, Boolean executeInExistingTransaction) +408
System.Data.Entity.Core.Objects.ObjectContext.SaveChanges(SaveOptions options) +39
System.Data.Entity.Internal.InternalContext.SaveChanges() +320
[DbUpdateConcurrencyException: 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.]
System.Data.Entity.Internal.InternalContext.SaveChanges() +366
System.Data.Entity.Internal.LazyInternalContext.SaveChanges() +56
System.Data.Entity.DbContext.SaveChanges() +52
Clase5.Data.ProductoRepositorio.Insertar(Producto producto) in c:\Users\Juan\Downloads\Clase_5_-_Codigo_fuente\Clase5\Clase4\Data\ProductoRepositorio.cs:27
Clase5.Controllers.ProductoController.TresCrearProducto(Producto producto) in c:\Users\Juan\Downloads\Clase_5_-_Codigo_fuente\Clase5\Clase4\Controllers\ProductoController.cs:43
lambda_method(Closure , ControllerBase , Object[] ) +180
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +211
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +28
System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +10
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +57
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +48
System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +57
System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +223
System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +57
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +48
System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +24
System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +102
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +57
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +43
System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +14
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +57
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +47
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +25
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +47
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9657896
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
答案 0 :(得分:0)
您已在Producto
实体中实现了字段级并发。转到Producto
实体的EDMX设计器。逐个浏览每列的属性。选择可视实体设计器中的列 - &gt;按F4。检查属性Concurrency Mode
的值。它应该设置为None。请查看下面的快照,作为我的某个实体Employee
的示例。如果对于任何列,您会将值视为Fixed
,那么这就是错误的根本原因。
如果您真的想要进行字段级并发,那么请改用RowVersion
。
答案 1 :(得分:0)
您是否将AutoDetectChangesEnabled设置为false?如果您已经这样做,请在SaveChanges之前手动调用DetectChanges,不要直接更改Entry State。