Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Colonne calculée dans EF Code First

Vous pouvez créer des colonnes calculées dans vos tables de base de données. Dans le modèle EF, vous annotez simplement les propriétés correspondantes avec le DatabaseGenerated attribut :

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public double Summ { get; private set; } 

Ou avec une cartographie fluide :

modelBuilder.Entity<Income>().Property(t => t.Summ)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)

Comme suggéré par Matija Grcic et dans un commentaire, c'est une bonne idée de rendre la propriété private set , car vous ne voudrez probablement jamais le définir dans le code de l'application. Entity Framework n'a aucun problème avec les setters privés.

Remarque : Pour EF .NET Core, vous devez utiliser ValueGeneratedOnAddOrUpdate car HasDatabaseGeneratedOption n'existe pas, par exemple :

modelBuilder.Entity<Income>().Property(t => t.Summ)
    .ValueGeneratedOnAddOrUpdate()