在 EF Code First 中微调小数精度和小数位
映射到 SQL Server 时,实体框架 (EF) Code First 默认为 decimal(18, 0)
属性的 System.Decimal
。 但是,您通常需要对精度和比例进行更多控制。 涉及直接 EntityPropertyConfiguration
操作的旧方法现已过时,被 EF 4.1 及更高版本中更简化的方法所取代。
利用DecimalPropertyConfiguration.HasPrecision
DecimalPropertyConfiguration
类提供了HasPrecision
方法来进行精确控制。 其语法为:
<code class="language-csharp">public DecimalPropertyConfiguration HasPrecision(byte precision, byte scale)</code>
precision
:总位数(小数点前后)。scale
:小数点后的位数。实际示例:设置精度和比例
在 DbContext
类的 OnModelCreating
方法中,您可以指定精度和小数位数:
<code class="language-csharp">public class EFDbContext : DbContext { protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<MyClass>().Property(e => e.MyDecimalProperty).HasPrecision(12, 10); base.OnModelCreating(modelBuilder); } }</code>
这会将 MyDecimalProperty
实体中的 decimal
(类型为 MyClass
)映射到 SQL Server decimal(12, 10)
列。 这可确保数据库存储最多 12 位数字,最多 10 位小数。
以上是如何控制 EF Code First 中小数属性的精度和小数位数?的详细内容。更多信息请关注PHP中文网其他相关文章!