web-dev-qa-db-ja.com

データ注釈を使用したmvcモデルのデフォルト値

データ注釈を使用してintプロパティのデフォルト値を追加することは可能ですか

何かのようなもの

[DefaultValue=1]
public int MyId {get; set;}
40
user1765862

これを試してください-コンストラクタでデフォルト値を設定します:

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;
}
53
Nilesh Gajare

[DefaultValue(false)]を使用します。

参照

8
bellona

コンストラクターメソッドはもちろん正しい(@Nileshによる)が、このソリューションでは、データベースに既に作成されている可能性のあるレガシーデータには対応していません。

また、移行を生成してAddColumnメソッドを調整することにより、レガシーデータを更新できます...

AddColumn("dbo.Orgs", "MyId", c => c.Int(nullable: false));

変更点:

AddColumn("dbo.Orgs", "MyId", c => c.Int(nullable: false, defaultValue: 1));

これは、INSERTのデフォルト値を自動的に更新するデータベーストリガーも作成するため、技術的にはデータベースの観点からコンストラクターメソッドは必要ありませんが、コンストラクターを使用して値を設定することはベストプラクティスです。

3
spadelives

クラスのコンストラクタを使用してのみこれを行うことができます。したがって、コードは次のようになります。

public class MyModel
{
    public MyModel()
    {
        MyId = 1;
    }

    public int MyId {get; set;}
}

これにより、クラスの新しいインスタンスが作成されるたびに、MyIdプロパティが1に設定されます。ただし、ユーザーがMyIdの値を指定したことをモデルバインディングが検出すると、デフォルト値をユーザー指定の値で上書きします。

0
Erik Schierboom