0

これが私のPOCOです

public class Game
{
    public Guid Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Galaxy> Galaxies { get; set; }
}

ここに TypeConfiguration があります ....

public class GameConfiguration : EntityTypeConfiguration<Game>
{
    public GameConfiguration()
    {
        HasKey(x => x.Id);
        Property(x => x.Id).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);

        HasMany(x => x.Galaxies);

        Property(x => x.Name)
            .IsRequired()
            .HasMaxLength(50);
    }
}

私の質問はこれです...なぜ、これが移行として追加されると、移行コードは「名前」プロパティを「NOT NULL」として設定しないのですか? また、MaxLength 設定も無視されます。どうしてこれなの?

CreateTable(
    "dbo.Games",
    c => new
    {
        Id = c.Guid(nullable: false),
        Name = c.String(),
    })
    .PrimaryKey(t => t.Id);
4

1 に答える 1

1

一見すると、残りの構成は、構成コンストラクターが実行されず、それを説明できる name プロパティが欠落している場合でも、慣例によって起こることと一致します。モデル ビルダーに構成を登録するコードがありません。

たとえば、次のように OnModelCreated メソッド内でエンティティ構成を登録できます。

modelBuilder.Configurations.Add(new GameConfiguration());
于 2013-10-28T17:17:14.760 に答える