3

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

这不是一个轻而易举的问题,它是一个 EF 问题,并且在 SO 上已被多次询问。喜欢这里这里

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

Javascript 代码如下所示:

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

SaveChanges被调用之前,数组看起来像这样:

在此处输入图像描述

什么时候SaveChanges被称为saveBundle看起来像这样(为了简洁省略了很多其他信息)

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

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

但保存到数据库后结果是这样的(第一列是id):

在此处输入图像描述

为什么它们被向后插入?

4

1 回答 1

3

我有一个更高阶的问题要问你。你为什么在乎?您正在使用关系数据库。订单未定义。如果你关心订单,你的数据应该有一些东西可以订购。

我不是要刻薄。老实说,我相信保存订单的期望会让你失败。以其他方式说服我。我准备好学习了。

ps:我不认为微风与它有任何关系......在客户端或服务器上。我敢打赌你用的是EF。鉴于所涉及的原则,我从来无法预测 EF 的保存顺序……我也懒得尝试。

于 2013-08-01T22:44:55.973 回答