Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Colonna calcolata in EF Code First

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