web-dev-qa-db-de.com

Standardwert in MVC-Modell mit Datenanmerkung

Ist es möglich, mithilfe von Datenanmerkungen einen Standardwert für die Eigenschaft int hinzuzufügen

so etwas wie

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

Versuchen Sie folgendes - setzen Sie den Standardwert im Konstruktor:

public class YOURMODEL
{
    public int MyId { get; set; }  

    public YOURMODEL()
    { 
        MyId = 1;       
    }
}

Späteres Hinzufügen durch andere Benutzer: Seit C # 6.0 (2015) ist diese einfachere Syntax zulässig:

public class YOURMODEL
{
    public int MyId { get; set; } = 1;
}
47
Nilesh

Die Konstruktormethode ist natürlich korrekt (gemäß @Nilesh), aber diese Lösung adressiert keine älteren Daten, die Sie möglicherweise bereits in Ihrer Datenbank erstellt haben. 

Sie können auch Ihre Altdaten aktualisieren, indem Sie die Migration generieren und die AddColumn-Methode entsprechend anpassen.

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

Änderungen an:

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

Beachten Sie, dass dadurch auch ein Datenbank-Trigger erstellt wird, der den Standardwert in INSERT automatisch aktualisiert, sodass Sie die Konstruktormethode aus der Datenbankperspektive technisch nicht benötigen. Das Festlegen des Werts mithilfe des Konstruktors ist jedoch immer noch die bewährte Methode.

3
spadelives

Verwenden Sie [DefaultValue(false)].

( Referenz )

2
bellona

Dies ist nur mit dem Konstruktor der Klasse möglich. Ihr Code sollte also so aussehen:

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

    public int MyId {get; set;}
}

Dies führt dazu, dass die MyId-Eigenschaft auf 1 gesetzt wird, wenn eine neue Instanz der Klasse erstellt wird. Wenn die Modellbindung jedoch feststellt, dass der Benutzer einen Wert für MyId angegeben hat, wird der Standardwert mit dem vom Benutzer angegebenen Wert überschrieben.

0
Erik Schierboom