SQLite.Net のテーブルのフィールドに DEFAULT を付ける


発端

  • あるアプリで、クラスのプロパティに思い通りの初期値が入らないことがあった
    • 例えば '1' を指定したつもりが '0' になってしまう
  • 発生するのはアプリをバージョンアップしたときだけ
    • プロパティが増えたときだけ
    • SQLite.Net に保存しているデータ
    • SQLite.Net のテーブルのフィールドに DEFAULT が付いていないのでは

課題

  • SQLite.Net のテーブルのフィールドに DEFAULT を付ける方法を確認しよう
  • プロパティを増やしたときに思い通りの初期値が入ることを確認しよう

手順

  1. プロパティを追加する前にプログラムを1回実行しておく
  2. プロパティを追加する
  3. プロパティ追加後の初回起動時に、読み込んだデータの内容を確認

コード

[Table(name: "Hoge")]
public class Hoge
{
    public Hoge()
    {
        //ByConstructor = 3;
        //ByConstructorDefault = 13;
    }

    public int Name { get; set; }

    //public int ByAuto { get; set; } = 1;

    //private int _byBacking = 2;
    //public int ByBacking
    //{
    //    get { return _byBacking; }
    //    set { _byBacking = value; }
    //}

    //public int ByConstructor { get; set; }

    //[Default]
    //public int ByAutoDefault { get; set; } = 11;

    //private int _byBackingDefault = 12;
    //[Default]
    //public int ByBackingDefault
    //{
    //    get { return _byBackingDefault; }
    //    set { _byBackingDefault = value; }
    //}

    //[Default]
    //public int ByConstructorDefault { get; set; }
}

結果


まとめ

  • 必要に応じて [Default] を付ける
  • クラスのプロパティの初期値の書き方は不問

参照