W tabelach bazy danych można tworzyć kolumny wyliczane. W modelu EF po prostu adnotuj odpowiednie właściwości za pomocą DatabaseGenerated
atrybut:
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public double Summ { get; private set; }
Lub z płynnym mapowaniem:
modelBuilder.Entity<Income>().Property(t => t.Summ)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)
Jak sugeruje Matija Grcic i w komentarzu, dobrym pomysłem jest ustawienie właściwości private set
, ponieważ prawdopodobnie nigdy nie chciałbyś go ustawiać w kodzie aplikacji. Entity Framework nie ma problemów z prywatnymi ustawiaczami.
Uwaga: W przypadku EF .NET Core należy użyć ValueGeneratedOnAddOrUpdate ponieważ HasDatabaseGeneratedOption nie istnieje, np.:
modelBuilder.Entity<Income>().Property(t => t.Summ)
.ValueGeneratedOnAddOrUpdate()