使用Breeze维护插入顺序

时间:2013-08-01 02:41:50

标签: entity-framework knockout.js breeze

为将来偶然发现此问题的人编辑。

这不是一个轻微的问题,它是一个EF问题,并且多次被问过SO。与herehere一样。

我正在使用Breeze和Knockout。我正在创建实体并将它们推送到数组中,并且在将更改保存到服务器时,数据的结果顺序与客户端上推送的顺序不同。我正在使用Web API和实体框架。

Javascript代码如下所示:

var owner = manager.createEntity('OwnerInformation');
licApp().owners.push(owner);

在调用SaveChanges之前,数组如下所示:

enter image description here

调用SaveChanges时,saveBundle看起来像这样(为简洁省略了很多其他信息)

{"entities": [
  {
    "Id": 2008,

  {
    "Id": -3,
    "LicensingApplicationId": 2008,
    "FirstName": "First",
    "LastName": "Owner",
  },
  {
    "Id": -4,
    "LicensingApplicationId": 2008,
    "FirstName": "Second",
    "LastName": "Owner",
  }
]}

但保存到数据库后,结果就是这个(第一列是id):

enter image description here

为什么要向后插入?

1 个答案:

答案 0 :(得分:3)

我有一个更高级别的问题。你为什么在乎?您正在使用关系数据库。订单未定义。如果您关心订单,您的数据应该有订单。

我不是想偷偷摸摸。老实说,我相信保存订单的期望会让你失败。不然说服我。我已经准备好学习了。

p.s。:我不认为Breeze与它有任何关系......在客户端或服务器上。我敢打赌你在使用EF。我从来没有能够预测EF的保存令......考虑到所涉及的原则,我也没有费心去尝试。