È possibile creare colonne calcolate nelle tabelle del database. Nel modello EF è sufficiente annotare le proprietà corrispondenti con DatabaseGenerated
attributo:
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public double Summ { get; private set; }
O con mappatura fluente:
modelBuilder.Entity<Income>().Property(t => t.Summ)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)
Come suggerito da Matija Grcic e in un commento, è una buona idea rendere la proprietà private set
, perché probabilmente non vorresti mai impostarlo nel codice dell'applicazione. Entity Framework non ha problemi con i setter privati.
Nota: Per EF .NET Core dovresti usare ValueGeneratedOnAddOrUpdate perché HasDatabaseGeneratedOption non esiste, ad esempio:
modelBuilder.Entity<Income>().Property(t => t.Summ)
.ValueGeneratedOnAddOrUpdate()