Dezimalgenauigkeit und Skalierung bei EF Core Code-First-Migrationen verstehen
Der Code-First-Ansatz von Entity Framework Core erfordert sorgfältige Überlegungen bei der Zuordnung von Dezimaleigenschaften zu Datenbankspalten. Während die Standardzuordnung in SQL Server decimal(18, 0)
ist, müssen Sie häufig die Genauigkeit und Skalierung für bestimmte Datenanforderungen anpassen.
Präzision und Maßstab definieren
Um die Genauigkeit und Skalierung Ihrer Dezimalspalten zu steuern, nutzen Sie die Methode HasPrecision
innerhalb der Klasse DecimalPropertyConfiguration
. Diese Methode akzeptiert zwei Argumente: precision
(Gesamtzahl der Ziffern) und scale
(Anzahl der Dezimalstellen).
Anschauliches Beispiel:
<code class="language-csharp">public class EFDbContext : DbContext { protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<MyClass>().Property(e => e.MyDecimalProperty).HasPrecision(12, 10); base.OnModelCreating(modelBuilder); } }</code>
In diesem Codeausschnitt ist MyDecimalProperty
mit einer Genauigkeit von 12 und einer Skalierung von 10 konfiguriert, was insgesamt 12 Ziffern mit 10 Nachkommastellen ermöglicht.
Wichtige Überlegungen:
Die Methode HasPrecision
wird in älteren EF-Versionen (z. B. EF 4.1) nicht unterstützt. Verwenden Sie für diese Versionen die Methode HasColumnType
wie unten gezeigt:
<code class="language-csharp"> modelBuilder.Entity<MyClass>().Property(e => e.MyDecimalProperty).HasColumnType("decimal(12, 10)");</code>
Denken Sie daran, dass precision
die Gesamtzahl der Ziffern darstellt, während sich scale
speziell auf die Ziffern nach dem Dezimalpunkt bezieht.
Das obige ist der detaillierte Inhalt vonWie steuere ich die Dezimalgenauigkeit und -skalierung bei EF Core Code-First-Migrationen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!