Как реализовать поле decimal (5,2) в EntityFrameworkCore 1.0 rc2?

Как реализовать поле decimal(5,2) в EntityFrameworkCore 1.0 rc2?

HasPrecision похоже, больше не доступен?

Ответ 1

Я вижу несколько примеров:

 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

Ответ 2

Вы можете добавить расширения для этого:

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})");
    }
}

Ответ 3

JFYI, если кто-то еще пытается ответить на этот вопрос (как я сделал)

В текущей версии (2.2) есть также способ аннотации сделать это:

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

Ссылка на документы: https://docs.microsoft.com/en-us/ef/core/modeling/relational/data-types