Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Berechnete Spalte in EF Code First

Sie können berechnete Spalten in Ihren Datenbanktabellen erstellen. Im EF-Modell kommentieren Sie einfach die entsprechenden Eigenschaften mit dem DatabaseGenerated Attribut:

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

Oder mit fließendem Mapping:

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

Wie von Matija Grcic und in einem Kommentar vorgeschlagen, ist es eine gute Idee, die Eigenschaft private set zu machen , da Sie es wahrscheinlich nie im Anwendungscode festlegen möchten. Entity Framework hat keine Probleme mit privaten Settern.

Hinweis: Für EF .NET Core sollten Sie ValueGeneratedOnAddOrUpdate verwenden weil HasDatabaseGeneratedOption nicht existiert, zB:

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