0

次のテーブルが作成されています (EF7、現在は EF Core で DNX コマンドを使用して)

[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; }
}

ただし、テーブルが作成されると、Code 列 (=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で列を作成するにはどうすればよいですか?

4

1 に答える 1

0

モデルを定義するには、次の 3 つの方法があります。

  • 慣例
  • 属性
  • 流暢な API

最初に規則が適用され、次に属性が適用され、最後にモデル ビルダーの流暢な API が適用されます。モデル ビルダーが属性構成をリセットしています。

モデル構成を簡素化し、常に同じ方法を使用するようにしてください。

注: MVC クライアント側の検証などを使用する場合、属性を介して行われた構成のみを理解することを考慮してください。他のすべての点では、EF モデルの構成方法は気にしません。

于 2016-02-05T10:13:05.283 に答える