EFCoreにおける自動採番と値の取得

公開日:2018-12-17
最終更新:2018-12-17

値の生成

リファレンスの日本語訳が不自由だが、つまりは自動採番の機能。SequenceとIdentityがあるが、今回はIdentityについて。

Identity属性の設定

Modelの自動で採番したいプロパティ(ID等のユニークなプロパティ)に対して、DatabaseGenerated(DatabaseGeneratedOption.Identity)を付与するだけ。

public class SampleModel  
{  
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]  
    public int Id { get; set; }  
    [Required]  
    public int Sample { get; set; }  
}  

Identityで採番された値を取得する

例えば、Id同士で紐づいているような、自動採番されたIdと同じIdを別のモデルのプロパティに設定する場合。
参考サイト


// 自動採番されるのでIdの明示的な指定はしない  
var model = new SampleModel()  
{  
    Sample = null  
};  

using(var context = new SampleContext())  
{  
    context.sample_table.Add(model);  

    try  
    {  
        context.SaveChanges();  
    }  
    catch(Exception e)  
    {  
        // 略  
    }  

    context.sample_add_table.Add(new SampleAddModel(){  
        // modelのIdを明示的に指定する  
        Id = model.Id,  
        Time = DateTime.Now  
    });  

    try  
    {  
        context.SaveChanges();  
    }  
    catch(Exception e)  
    {  
        // 略  
    }  
}  

注意点としては、context.<tableName>.Addの時点ではまだクエリが作成されただけで、実行自体はされていないこと。
SaveChanges()して初めて、modelのIdに自動採番される値がDBにも反映されて確定の値になる。
また、Identityの自動採番は連番になるとは限らない点にも注意。

記事が少しでもいいなと思ったらクラップを送ってみよう!
18
+1
@showyleeの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする