質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

1862閲覧

Entity FrameworkのSaveChanges()で、順番どおりに保存したい

haru853

総合スコア38

Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2017/10/26 08:19

Entity Frameworkでデータを保存しようと思い、以下のコードのInitialize()を実行したところ保存される順番が上から順番にはなりませんでした。

using System.Collections.Generic; using System.Linq; using Microsoft.EntityFrameworkCore; namespace Test.Models { public class Person { public int Id { get; set; } public string Name { get; set; } public static void Initialize(DbContext context) { var t = context.Set<Person>(); t.AddRange( new Person { Name = "あああ" }, new Person { Name = "いいい" }, new Person { Name = "ううう" }, new Person { Name = "えええ" }, new Person { Name = "おおお" }); context.SaveChanges(); } } }

以下のようにデーターベースに順番どおりに保存するには、どのようにしたらよろしいでしょうか?
一件づつSaveChanges()する必要があるでしょうか?

IdName
1あああ
2いいい
3ううう
4えええ
5おおお

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/26 10:42

id は Identity で主キーですか?
haru853

2017/10/26 10:54

はい。そうです。
guest

回答1

0

ベストアンサー

Id は Identity で主キーということであれば、その Id 列はテーブル内で一意である整数値を提供するために使用されるためだけのものであって、それ以上のものではありません。

それ以前に、まず INSERT される順番は何の意味もないことは理解されているでしょうか? ORDER BY 句を使わない限り、SELECT 句で抽出されるレコードの順序には何の保証もないことは知ってますか?

あああ、いいい、・・・、おおお、という順序で抽出したいなら ORDER BY Name とすべきです。

SELECT ... ORDER BY Id で抽出すれば確かに Id の順になりますが、それにも意味はないです。質問者さんがやった結果もそれを物語っていると思います。

Identity の目的を理解して、そもそもの考え方を変えることをお勧めします。

投稿2017/10/26 13:26

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

haru853

2017/10/26 23:26

回答ありがとうございます。 キーを節約できるかと思ったのですが、Identityをそういう目的で使用してはいけないのですね。 並び順用のキーを追加するようにいたします。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問