1. 生成数据库字段:
1.1 字段的最大长度:
public PersonConfig()
{
this.ToTable("T_Persons");
this.HasKey(p => p.Id)//主键
this.Ignore(p => p.Name1);//某个字段不参与映射数据库
this.Property(p => p.Name).IsFixedLength()//是否对应固定长度
this.Property(p => p.Name).IsUnicode(false)//对应的数据库类型是 varchar 类型,而不是nvarchar
this.Property(p => p.Id).HasColumnName("Id")//Id 列对应数据库中名字为 Id 的字段
this.Property(p =>p.Id).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)//指定字段是自动增长类型
this.Property(p => p.Name).IsRequired() //属性不能为空
this.Property(p => p.Name).HasMaxLength(50);//长度为 50
this.Property(p => p.Name).IsOptional() //属性可以为空
}
1.2 查看异常(DbEntityValidationException ):
try
{
tdc.SaveChanges();
}
catch (DbEntityValidationException ex)
{
foreach (var err in ex.EntityValidationErrors)
{
foreach (var item in err.ValidationErrors)
{
Console.WriteLine("错误:"+item.PropertyName+"信息:"+item.ErrorMessage);
}
}
}
另一种写法:
try
{
ctx.SaveChanges();
}
catch(DbEntityValidationException ex)
{
StringBuilder sb = new StringBuilder();
foreach(var ve in ex.EntityValidationErrors.SelectMany(eve=>eve.ValidationErrors))
{
sb.AppendLine(ve.PropertyName+":"+ve.ErrorMessage);
}
Console.WriteLine(sb);
}