sql >> Base de Datos >  >> RDS >> Sqlserver

Columna calculada en EF Code First

Puede crear columnas calculadas en las tablas de su base de datos. En el modelo EF, solo anota las propiedades correspondientes con DatabaseGenerated atributo:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public double Summ { get; private set; } 

O con mapeo fluido:

modelBuilder.Entity<Income>().Property(t => t.Summ)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)

Como sugirió Matija Grcic y en un comentario, es una buena idea hacer que la propiedad private set , porque probablemente nunca querrá configurarlo en el código de la aplicación. Entity Framework no tiene problemas con los configuradores privados.

Nota: Para EF .NET Core, debe usar ValueGeneratedOnAddOrUpdate porque HasDatabaseGeneratedOption no existe, por ejemplo:

modelBuilder.Entity<Income>().Property(t => t.Summ)
    .ValueGeneratedOnAddOrUpdate()