entity-framework-core 数据库映射(decimal)问题

本文介绍了如何在使用Entity Framework Core 6时,通过重写配置处理decimal类型的映射错误,以减少应用程序日志中的警告。通过设置decimal属性的精度和小数位数,确保了数据库一致性并优化了日志输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

core网站开发过程中,发现windows 应用程序日志,总是会提醒 映射转换错误,如下图展示

 

 经测试,虽然不影响正常功能,但是日志持续警告,故此处理如下

foreach (var property in modelBuilder.Model.GetEntityTypes()
    .SelectMany(t => t.GetProperties())
    .Where(p => p.ClrType == typeof(decimal) || p.ClrType == typeof(decimal?)))
{
    // EF Core 1 & 2
    property.Relational().ColumnType = "decimal(18, 6)";

    // EF Core 3
    //property.SetColumnType("decimal(18, 6)");

    // EF Core 5
    //property.SetPrecision(18);
    //property.SetScale(6);
}
// EF Core 6
protected override void ConfigureConventions(
    ModelConfigurationBuilder configurationBuilder)
{
    configurationBuilder.Properties<decimal>()
        .HavePrecision(18, 6);
}

由于本项目中用的是 EF Core 6,故此重写数据库定位器基类,指定类型映射即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值