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()