web-dev-qa-db-fra.com

Comment implémenter le champ décimal (5,2) dans EntityFrameworkCore 1.0 rc2?

Comment implémenter le champ decimal(5,2) dans EntityFrameworkCore 1.0 rc2?

HasPrecision ne semble plus être disponible?

27
Caesar

Je vois des exemples comme celui-ci:

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

et le code pour le prendre en charge est ici, donc j'espère que cela est pris en charge dans la version que vous utilisez:

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

39
AaronLS

Vous pouvez ajouter des extensions pour cela comme ceci:

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})");
    }
}
31
Andrés Robinet

JFYI, si une somedobie vient encore à cette question (comme je l'ai fait)

Dans la version actuelle d'EF Core (2.2), il existe également la méthode d'annotation des données:

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

Lien vers les documents: https://docs.Microsoft.com/en-us/ef/core/modeling/relational/data-types

4
Tolbxela