如何在 EntityFrameworkCore 1.0 rc2 中实现字段 decimal(5,2)?

How to implement the field decimal(5,2) in EntityFrameworkCore 1.0 rc2?

如何在EntityFrameworkCore 1.0 rc2中实现字段decimal(5,2)

HasPrecision好像下架了?

我看到了一些这样的例子:

 entityBuilder.Property(r => r.TotalScore)
            .HasColumnType("decimal(5,2)")
            .IsRequired(true);

支持此功能的代码在此处,因此希望您使用的版本支持此功能:

https://github.com/aspnet/EntityFramework/blob/f416dd9a71a5a6a69715b4ba40a37e6f9da751ef/src/Microsoft.EntityFrameworkCore.Relational/Metadata/Internal/RelationalPropertyBuilderAnnotations.cs

您可以像这样添加扩展:

public static class SqlServerModelBuilderExtensions
{
    public static PropertyBuilder<decimal?> HasPrecision(this PropertyBuilder<decimal?> builder, int precision, int scale)
    {
        return builder.HasColumnType($"decimal({precision},{scale})");
    }

    public static PropertyBuilder<decimal> HasPrecision(this PropertyBuilder<decimal> builder, int precision, int scale)
    {
        return builder.HasColumnType($"decimal({precision},{scale})");
    }
}

仅供参考,如果有人还在回答这个问题(就像我一样)

在当前版本的 EF Core (2.2) 中,还有数据注释方法可以执行此操作:

public class SomeEFModelClass
{
    [Column(TypeName = "decimal(5,2)")]
    public decimal TotalScore{ get; set; }
}

Link 到文档:https://docs.microsoft.com/en-us/ef/core/modeling/relational/data-types

从 EF Core 5 开始,您可以使用这个:

modelBuilder.Entity<Payment>().Property(b => b.Amount).HasPrecision(5, 2);