Você pode criar colunas computadas em suas tabelas de banco de dados. No modelo EF, você apenas anota as propriedades correspondentes com o
DatabaseGenerated
atributo:[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public double Summ { get; private set; }
Ou com mapeamento fluente:
modelBuilder.Entity<Income>().Property(t => t.Summ)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)
Como sugerido por Matija Grcic e em um comentário, é uma boa ideia tornar a propriedade
private set
, porque você provavelmente nunca desejaria defini-lo no código do aplicativo. O Entity Framework não tem problemas com setters privados. Observação: Para o EF .NET Core, você deve usar ValueGeneratedOnAddOrUpdate porque HasDatabaseGeneratedOption não existe, por exemplo:
modelBuilder.Entity<Income>().Property(t => t.Summ)
.ValueGeneratedOnAddOrUpdate()