3

将来この質問に出くわした人のために編集してください。

これは簡単な問題ではなく、EF の問題であり、SO で何度も質問されています。ここここのように。

Breeze with Knockout を使用しています。エンティティを作成して配列にプッシュしていますが、変更をサーバーに保存すると、クライアントにプッシュされたときとは異なる順序でデータが終了します。Web API と Entity Framework を使用しています。

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

高次の質問があります。なんで気にするの?リレーショナル データベースを使用しています。順序が定義されていません。順序が気になる場合は、データに orderBy が必要です。

私は意地悪をしようとしているわけではありません。正直なところ、保存順序を期待すると失敗する可能性があると思います。そうでなければ私を説得してください。私は学ぶ準備ができています。

ps: Breeze はそれとは何の関係もないと思います... クライアントでもサーバーでも。EFを使用していると思います。私は EF の保存順序を予測することができませんでした ... また、関係する原則を考えると、試してみることもありませんでした。

于 2013-08-01T22:44:55.973 に答える