EF5およびEF4のバージョンを持つ過去のプロジェクトでは、IsRequired()流暢APIメソッドは、プロパティがnullまたは空文字列の場合はDbEntityValidationExceptionをスローします。現在のプロジェクトでEF6を使用している場合、文字列プロパティが空の場合、DBEntityValidationExceptionはスローされません。EF 6空文字列を許可するIsRequired()
エンティティ:
public class Application : BaseEntity
{
public string Name { get; set; }
// navigation properties
public IList<Role> Roles { get; set; }
}
構成:
internal class ApplicationMapping : EntityTypeConfiguration<Application>
{
public ApplicationMapping()
{
// table name
this.ToTable("Applications");
// properties
this.Property(t => t.Name)
.IsRequired()
.HasMaxLength(100);
}
}
MSDN EFのドキュメントとスタックオーバーフローの上に注いだ後、私はなぜこれが起こっているために途方に暮れています。大会はEF6に追加/変更されましたか?
あなたは 'OnModelCreated'メソッドの内部の内側にあなたの' EntityTypeConfiguration'を登録しているのですか?したがって、 'modelBuilder.Configurations.Add(new ApplicationMapping()); ' – nemesv
はい、モデルの作成時にエンティティタイプの設定がインスタンス化されていることを確認しました。 Nameプロパティがnullの場合、IsRequired()はDBEntityValidationExceptionをスローしますが、Name = string.Emptyの場合はDBEntityValidationExceptionがスローされます。 – awolske