Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Coluna calculada no EF Code First


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