我正在为一个列创建一个 Table 设置 Maxlength = 5 并且它的创建长度 = 1

I am creating a Table setting Maxlength = 5 for a column and its created with length = 1

我正在创建以下 table(通过在 EF7 中使用 DNX 命令,现在是 EF Core)

[Table("FishGrade")]
public partial class FishGrade
{
    public FishGrade()
    {
        FishPrices = new HashSet<FishPrice>();
    }

    [HiddenInput]
    [Column("FishGradeId")]
    public int Id { get; set; }

    [Column("GradeCode")]
    [MaxLength(5), Required]
    public string Code { get; set; }

    [Column("GradeName")]
    public string Name { get; set; }

    public string IsActive { get; set; }

    public virtual ICollection<FishPrice> FishPrices { get; set; }
}

但是在创建 table 时,代码列(名为 =GradeCode 的列)被创建为 1 个字符长的列。

我在OnModelCreating方法中也有以下内容

 modelBuilder.Entity<FishGrade>(entity =>
        {
            entity.Property(e => e.Code)
                .HasColumnType("char");

            entity.Property(e => e.Name)
                .IsRequired()
                .HasMaxLength(50);

            entity.Property(e => e.IsActive)
                .HasMaxLength(1)
                .HasColumnType("char");
        });

为什么会这样?如何获得要创建的长度为 5 的列?

您可以通过三种方式定义模型:

  • 惯例
  • 属性
  • 流利API

首先应用约定,然后是属性,最后是模型构建器中的流畅 API。您的模型构建器正在重置属性配置。

您应该尝试简化模型配置并始终使用相同的方法。

注意:请注意,如果您使用 MVC 客户端验证之类的东西,它只能理解通过属性进行的配置。在所有其他方面,它不介意您如何配置 EF 模型。