在以前的版本为EF5和EF4的项目中,如果属性为null或空字符串,则IsRequired()流利API方法将抛出DbEntityValidationException。在我当前的utilizng 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?
有您注册'EntityTypeConfiguration'内的'OnModelCreated'方法里面?因此,使用'modelBuilder.Configurations.Add(new ApplicationMapping());' – nemesv
是的,我已经验证实体类型配置是在模型创建时实例化的。当Name属性为null时,IsRequired()会引发DBEntityValidationException,但当Name = string.Empty时,则不会引发DBEntityValidationException。 – awolske