Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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
Breeze 自定义DataService适配器saveChanges方法将实体设置为未更改_Breeze - Fatal编程技术网

Breeze 自定义DataService适配器saveChanges方法将实体设置为未更改

Breeze 自定义DataService适配器saveChanges方法将实体设置为未更改,breeze,Breeze,我已经为BreezeJS实现了一个定制的DataService适配器——我想将Breeze与RESTful后端服务(而不是OData或ASP.NETWebAPI)一起使用 到目前为止,经过一段学习曲线后,成绩不错 我遇到了一个问题,当我调用savechanges时,客户机上的实体没有被标记为“Unchanged”。它们保持相同的实体状态 我假设这与对后端服务的AJAX请求的成功处理程序有关(查看WebAPI适配器的源代码): 看起来响应包含一个“实体”数组。这些“实体”看起来像什么?它使用更新的

我已经为BreezeJS实现了一个定制的DataService适配器——我想将Breeze与RESTful后端服务(而不是OData或ASP.NETWebAPI)一起使用

到目前为止,经过一段学习曲线后,成绩不错

我遇到了一个问题,当我调用savechanges时,客户机上的实体没有被标记为“Unchanged”。它们保持相同的实体状态

我假设这与对后端服务的AJAX请求的成功处理程序有关(查看WebAPI适配器的源代码):

看起来响应包含一个“实体”数组。这些“实体”看起来像什么?它使用更新的entityAspect.entityState值(服务器响应为“未更改”)响应客户端发送的内容


这就是应该传递到延迟的
调用中的内容。解决
调用吗?

我有一个有效的解决方案

简而言之,以下是传递给

deferred.resolve(saveResult);
调用savechangeajax请求的成功处理程序

  • 服务器响应应包括有关如何从客户端生成的id映射到服务器生成的id(如果服务器生成了id)的信息。这可以是响应中返回的一个
    keyMapping
    属性(就像Breeze API控制器一样),也可以是我的服务将
    keyMapping
    属性作为特定资源的子属性返回

    • 客户机代码应创建一个对象数组,如下所示:

      {entityTypeName:“完全限定实体类型名称”, tempValue:“客户端生成的id”, realValue:“服务器生成的id” }

    • 此数组是
      saveResult
      对象的keyMappings属性
    • saveResult
      对象的
      entities
      属性是从服务器修改的所有实体的平面列表。由于我的服务API的设计,它可以返回一个实体,以及嵌入其中的子实体,我必须遍历这些实体并将其拉出到一个平面列表中。此外,这些实体对象应该是“原始”的,不包括entityAspect属性或Breeze可能解释为“真实”实体的任何内容
此外,还有一点也很有帮助,那就是查看来自Breeze的新样本。他们已经实现了一个定制的
dataServiceAdapter
,用于连接他们的NodeJS/MongoDB后端。这也提供了一些额外的见解


祝你好运

我有一个有效的解决方案

简而言之,以下是传递给

deferred.resolve(saveResult);
调用savechangeajax请求的成功处理程序

  • 服务器响应应包括有关如何从客户端生成的id映射到服务器生成的id(如果服务器生成了id)的信息。这可以是响应中返回的一个
    keyMapping
    属性(就像Breeze API控制器一样),也可以是我的服务将
    keyMapping
    属性作为特定资源的子属性返回

    • 客户机代码应创建一个对象数组,如下所示:

      {entityTypeName:“完全限定实体类型名称”, tempValue:“客户端生成的id”, realValue:“服务器生成的id” }

    • 此数组是
      saveResult
      对象的keyMappings属性
    • saveResult
      对象的
      entities
      属性是从服务器修改的所有实体的平面列表。由于我的服务API的设计,它可以返回一个实体,以及嵌入其中的子实体,我必须遍历这些实体并将其拉出到一个平面列表中。此外,这些实体对象应该是“原始”的,不包括entityAspect属性或Breeze可能解释为“真实”实体的任何内容
此外,还有一点也很有帮助,那就是查看来自Breeze的新样本。他们已经实现了一个定制的dataServiceAdapter,用于连接他们的NodeJS/MongoDB后端。这也提供了一些额外的见解


祝你好运

这不是一个简单的答案。我在建造,所以这周我不能去。希望有人能比我抢先一步。下周还有什么更新吗?谢谢你的帮助!这不是一个简单的答案。我在建造,所以这周我不能去。希望有人能比我抢先一步。下周还有什么更新吗?谢谢你的帮助!