データ注釈を使用してintプロパティのデフォルト値を追加することは可能ですか
何かのようなもの
[DefaultValue=1]
public int MyId {get; set;}
これを試してください-コンストラクタでデフォルト値を設定します:
public class YOURMODEL
{
public int MyId { get; set; }
public YOURMODEL()
{
MyId = 1;
}
}
他のユーザーによる後からの追加:C#6.0(2015)以降、この単純な構文が許可されました。
public class YOURMODEL
{
public int MyId { get; set; } = 1;
}
[DefaultValue(false)]
を使用します。
( 参照 )
コンストラクターメソッドはもちろん正しい(@Nileshによる)が、このソリューションでは、データベースに既に作成されている可能性のあるレガシーデータには対応していません。
また、移行を生成してAddColumnメソッドを調整することにより、レガシーデータを更新できます...
AddColumn("dbo.Orgs", "MyId", c => c.Int(nullable: false));
変更点:
AddColumn("dbo.Orgs", "MyId", c => c.Int(nullable: false, defaultValue: 1));
これは、INSERTのデフォルト値を自動的に更新するデータベーストリガーも作成するため、技術的にはデータベースの観点からコンストラクターメソッドは必要ありませんが、コンストラクターを使用して値を設定することはベストプラクティスです。
クラスのコンストラクタを使用してのみこれを行うことができます。したがって、コードは次のようになります。
public class MyModel
{
public MyModel()
{
MyId = 1;
}
public int MyId {get; set;}
}
これにより、クラスの新しいインスタンスが作成されるたびに、MyId
プロパティが1
に設定されます。ただし、ユーザーがMyId
の値を指定したことをモデルバインディングが検出すると、デフォルト値をユーザー指定の値で上書きします。