271 votes

Entity Framework 6 Code first Valeur par défaut

Y a-t-il un moyen "élégant" de donner une valeur par défaut à une propriété spécifique ?

Peut-être par DataAnnotations, quelque chose comme :

[DefaultValue("true")]
public bool Active { get; set; }

Merci.

-2voto

La méthode HasDefaultValue de l'API Fluent d'Entity Framework Core est utilisée pour spécifier la valeur par défaut d'une colonne de base de données mappée à une propriété. La valeur doit être une constante.

public class Contact
{
    public int ContactId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    public bool IsActive { get; set; }
    public DateTime DateCreated { get; set; }
}
public class SampleContext : DbContext
{
    public DbSet Contacts { get; set; }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity()
            .Propery(p => p.IsActive)
            .HasDefaultValue(true);
    }
}

Ou

comme ça!

Vous pouvez également spécifier un fragment SQL qui est utilisé pour calculer la valeur par défaut :

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity()
        .Property(b => b.Created)
        .HasDefaultValueSql("getdate()");
}

-3voto

Hatef. Points 239

Supposons que vous avez une classe nommée Produits et que vous avez un champ IsActive. il ne vous reste plus qu'à créer un constructeur :

Public class Produits
{
    public Produits()
    {
       IsActive = true;
    }
 public string Champ1 { get; set; }
 public string Champ2 { get; set; }
 public bool IsActive { get; set; }
}

Ensuite, la valeur par défaut de votre IsActive est Vraie!

Éditer :

Si vous souhaitez faire cela avec SQL, utilisez cette commande :

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity()
        .Property(b => b.IsActive)
        .HasDefaultValueSql("true");
}

-5voto

Acorndog Points 1

Mmm... Je fais d'abord DB, et dans ce cas, c'est en fait beaucoup plus facile. EF6 non? Il suffit d'ouvrir votre modèle, de cliquer avec le bouton droit sur la colonne pour laquelle vous souhaitez définir une valeur par défaut, de choisir les propriétés, et vous verrez un champ "ValeurParDéfaut". Il suffit de le remplir et d'enregistrer. Cela configurera le code pour vous.

Votre kilométrage peut varier avec le code en premier, je n'ai pas travaillé avec cela.

Le problème avec beaucoup d'autres solutions, c'est que même si elles fonctionnent initialement, dès que vous reconstruisez le modèle, cela éliminera tout code personnalisé que vous avez inséré dans le fichier généré par la machine.

Cette méthode fonctionne en ajoutant une propriété supplémentaire au fichier edmx:

Et en ajoutant le code nécessaire au constructeur:

public Thingy()
{
  this.Iteration = 1;

-6voto

Définissez la valeur par défaut de la colonne dans une table dans MSSQL Server et dans le code de la classe ajoutez l'attribut, comme ceci :

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]

pour la même propriété.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X