2009-05-18 16 views
1

SQL ServerデータベースでID列を使用する予定です。現在、ユニークなIDを生成するためにguidを使用していますが、順序が関係するので、ID columsnに切り替えることを検討しています。エンティティフレームワークは、データベースに挿入するときに順序を保持しますか?

注文が関係しているので、エンティティコンテキストにオブジェクトを追加する順番も、データベースに挿入される順序であることを確認する必要があります。これは、SQL ServerがID列の値を生成するため、適切です。

これはエンティティフレームワークによって保証されますか?そうでない場合は、異なるプロセスから更新されているデータベースの独自の整数IDを生成する効率的なソリューションは何ですか?

答えて

1

私はちょうどここに推測していますが(テストするのはかなり簡単ですが)、私はEFがその順序を保証できるとは思いません。私は、内部構造がIEnumerable型、おそらくリストの中に挿入されているだけで列挙されていることを確信しています。列挙は毎回同じ順序であるとは限りません。

代わりに、データベーステーブルに専用の「ソート順」列を追加して、そこにフォームを作成します。

1

レコードの順序が返されるため、挿入順序に依存しません。確かに、ほとんどの時間は動作しますが、行をどこかに挿入する必要がある場合はどうしますか?私はあなたの最善の策は、序数の列を追加し、積極的にそれらが返されるように各行の序数を生成することだと思います。

+0

私は、順序を明示的に設定するためにID列を追加することを計画しています。しかし、そこに入れたい順序は到着順序です。私は、新しい行の新しいIDを得るために最後に追加された行のデータベースを照会することを避けるための解決策を探しています。 –

+0

さて、データベースにヒットせずにそれを行う方法は他にもあります。たとえば、そこにタイムスタンプを入れることができます。同時に大量の行がある場合、タイムスタンプ+トランザクションインデックスを持つことができます。そうしたくなければ、ダニを保存するbigintを持つことができます。 。 。ダニごとに複数のインサートを得るのはかなり難しいです。 基本的には、必要に応じて序数を設定することができます。何らかの理由で注文が必要な場合は、引き続きそのオプションがあります。 –

関連する問題