了解 EF Core 代码优先迁移中的小数精度和小数位数
Entity Framework Core 的代码优先方法在将十进制属性映射到数据库列时需要仔细考虑。 虽然 SQL Server 中的默认映射为 decimal(18, 0)
,但您通常需要根据特定数据要求自定义精度和小数位数。
定义精度和尺度
要控制小数列的精度和小数位数,请利用 HasPrecision
类中的 DecimalPropertyConfiguration
方法。 此方法接受两个参数:precision
(总位数)和 scale
(小数位数)。
示例:
<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>
在此代码片段中,MyDecimalProperty
配置为精度为 12,小数位数为 10,总共 12 位数字,小数点后 10 位。
重要注意事项:
旧版 EF 版本(例如 EF 4.1)不支持 HasPrecision
方法。 对于这些版本,请使用 HasColumnType
方法,如下所示:
<code class="language-csharp"> modelBuilder.Entity<MyClass>().Property(e => e.MyDecimalProperty).HasColumnType("decimal(12, 10)");</code>
请记住,precision
代表总位数,而 scale
特指小数点后的数字。
以上是如何在 EF Core 代码优先迁移中控制小数精度和小数位数?的详细内容。更多信息请关注PHP中文网其他相关文章!