我正在为一个列创建一个 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 模型。
我正在创建以下 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 模型。