web-dev-qa-db-fra.com

Valeur par défaut dans le modèle MVC utilisant l'annotation de données

Est-il possible, à l'aide d'annotations de données, d'ajouter une valeur par défaut pour la propriété int

quelque chose comme

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

Essayez ceci - définissez la valeur par défaut dans le constructeur:

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

    public YOURMODEL()
    { 
        MyId = 1;       
    }
}

Ajout ultérieur par un autre utilisateur: Depuis C # 6.0 (2015), cette syntaxe plus simple est autorisée:

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

La méthode du constructeur est bien sûr correcte (selon @Nilesh), mais cette solution ne traite aucune des données existantes que vous avez peut-être déjà créées dans votre base de données. 

Vous pouvez également mettre à jour vos données existantes en générant la migration, puis en ajustant la méthode AddColumn ainsi ...

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

changements à:

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

Notez que cela créera également un déclencheur de base de données qui mettrait automatiquement à jour la valeur par défaut sur INSERT, de sorte que vous n’auriez pas besoin techniquement de la méthode du constructeur à partir de la perspective de la base de données, mais il est préférable de définir la valeur à l’aide du constructeur.

3
spadelives

Utilisez [DefaultValue(false)].

( Référence )

2
bellona

Vous ne pouvez le faire qu'en utilisant le constructeur de la classe. Votre code devrait donc ressembler à ceci:

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

    public int MyId {get; set;}
}

Cela entraînera la définition de la propriété MyId sur 1 chaque fois qu'une nouvelle instance de la classe est créée. Toutefois, si la liaison de modèle détecte que l'utilisateur a spécifié une valeur pour MyId, elle remplacera la valeur par défaut par celle spécifiée par l'utilisateur.

0
Erik Schierboom