Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Breeze SaveChanges在删除实体时始终引发DbUpdateConcurrencyException_C#_Entity Framework_Breeze - Fatal编程技术网

C# Breeze SaveChanges在删除实体时始终引发DbUpdateConcurrencyException

C# Breeze SaveChanges在删除实体时始终引发DbUpdateConcurrencyException,c#,entity-framework,breeze,C#,Entity Framework,Breeze,我刚刚将“并发模式”属性启用为我的一个实体的固定属性 当我尝试更新时,一切都很好 但当我尝试删除实体时,总是会出现以下错误: DBUpdateConcurrencyException 受意外事件影响的存储更新、插入或删除语句 行数(0)。实体可能已被修改或删除,因为 实体已加载。刷新ObjectStateManager条目 是否有任何方法可以禁用删除操作的DBUpdateConcurrencyException?如果没有,我如何管理这种类型的异常 [HttpPost] public SaveRe

我刚刚将“并发模式”属性启用为我的一个实体的固定属性

当我尝试更新时,一切都很好

但当我尝试删除实体时,总是会出现以下错误:

DBUpdateConcurrencyException

受意外事件影响的存储更新、插入或删除语句 行数(0)。实体可能已被修改或删除,因为 实体已加载。刷新ObjectStateManager条目

是否有任何方法可以禁用删除操作的DBUpdateConcurrencyException?如果没有,我如何管理这种类型的异常

[HttpPost]
public SaveResult SaveChanges(JObject saveBundle)
{

    try
    {
        return _breezeComponent.SaveChanges(saveBundle);
    }
    catch (DbUpdateConcurrencyException ex)
    {               
        //Workaround needed
    }

}
顺便说一句,我已经看过这类解决方案:。有什么方法可以将此代码与Breeze引擎集成

编辑: 我已经从1.4.5版升级到1.4.7版,但仍然存在相同的问题

如果我看一下JSON对象,将entityState从“已删除”更改为“已分离”会是一个解决方案吗?微风中有什么环境可以帮助我做到这一点吗

{
  "entities": [
    {
      "EventId": 11111,
      "EventName": "Jon Doe",
      "EventCity": "Montreal",
      "EventDate": "2014-01-24T00:00:00Z",
      "TermDate": "2014-01-08T00:00:00Z",
      "Insertedby": "Terry",
      "InsertDate": "2014-01-06T14:31:14.197Z",
      "Updatedby": "Terry",
      "UpdateDate": "2014-01-07T15:50:53.037Z",
      "entityAspect": {
        "entityTypeName": "Event:#Cds.Corpo.GuestList.Models",
        "defaultResourceName": "Events",
        "entityState": "Deleted",
        "originalValuesMap": {},
        "autoGeneratedKey": {
          "propertyName": "EventId",
          "autoGeneratedKeyType": "Identity"
        }
      }
    }
  ],
  "saveOptions": {}
}

只是一个猜测,但您是否在数据库中启用了某种形式的级联删除。如果是这样,那么问题可能是删除父项会导致子项也被删除,当breeze服务器代码生效时,它会再次尝试删除“已经”删除的子项。当此删除找不到子项时,将引发并发异常


避免这种情况的方法是使用BeforeSaveEntities截取点,并从“保存映射”中删除任何已删除实体(属于级联删除关系的一部分)的所有子级。请参阅本页关于BeforeSaveEntities的Breeze文档:

我们的应用程序框架中隐藏了一个机制,它在将更改保存到数据库之前确实更新了属性。所以这不是一个容易的问题


现在已将筛选器添加到解决方案中,以在删除时排除此模式

很好的猜测,但我的数据库中没有级联删除或级联更新。你正在运行哪个版本的Breeze?我目前的版本是1.4.5。也许升级到1.4.7会解决问题?可能,但不是很确定,因为我无法重新设置问题(在1.4.7上)。所以也许。。。