W poprzednich projektach z wersjami EF5 i EF4, metoda API IsRequired() płynnie rzuciłaby wyjątek DbEntityValidationException, gdyby właściwość była pusta lub pusty. W moim bieżącym projekcie wykorzystującym EF6 wyjątek DBEntityValidationException nie jest generowany, gdy właściwość string jest pusta.EF 6 IsRequired() zezwalając na puste ciągi znaków
Podmiot:
public class Application : BaseEntity
{
public string Name { get; set; }
// navigation properties
public IList<Role> Roles { get; set; }
}
Konfiguracja:
internal class ApplicationMapping : EntityTypeConfiguration<Application>
{
public ApplicationMapping()
{
// table name
this.ToTable("Applications");
// properties
this.Property(t => t.Name)
.IsRequired()
.HasMaxLength(100);
}
}
Po wylaniu na dokumentacji MSDN EF i przepełnienia stosu, jestem w rozterce, dlaczego tak się dzieje. Czy konwencja została dodana/zmodyfikowana do wersji EF6?
Czy zarejestrowałeś 'EntityTypeConfiguration' wewnątrz wewnątrz' metody OnModelCreated'? Tak więc z 'modelBuilder.Configurations.Add (new ApplicationMapping());' – nemesv
Tak, sprawdziłem, że konfiguracja typu jednostki jest tworzona, gdy model jest tworzony. IsRequired() rzuca wyjątek DBEntityValidationException, gdy właściwość Name ma wartość null, ale nie wtedy, gdy Name = string.Empty – awolske