Comprendre la précision et l'échelle décimales dans les migrations EF Core Code-First
L'approche Code-First d'Entity Framework Core nécessite une attention particulière lors du mappage des propriétés décimales aux colonnes de la base de données. Bien que le mappage par défaut soit decimal(18, 0)
dans SQL Server, vous devrez souvent personnaliser la précision et l'échelle pour des besoins de données spécifiques.
Définir la précision et l'échelle
Pour contrôler la précision et l'échelle de vos colonnes décimales, utilisez la méthode HasPrecision
au sein de la classe DecimalPropertyConfiguration
. Cette méthode accepte deux arguments : precision
(nombre total de chiffres) et scale
(nombre de décimales).
Exemple illustratif :
<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>
Dans cet extrait de code, MyDecimalProperty
est configuré avec une précision de 12 et une échelle de 10, permettant un total de 12 chiffres avec 10 places après la virgule décimale.
Considérations importantes :
La méthode HasPrecision
n'est pas prise en charge dans les anciennes versions d'EF (par exemple, EF 4.1). Pour ces versions, utilisez la méthode HasColumnType
comme indiqué ci-dessous :
<code class="language-csharp"> modelBuilder.Entity<MyClass>().Property(e => e.MyDecimalProperty).HasColumnType("decimal(12, 10)");</code>
N'oubliez pas que precision
représente le nombre total de chiffres, tandis que scale
fait spécifiquement référence aux chiffres qui suivent la virgule décimale.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!