【EntityFramework-4】Fluent API配置

2017-06-14  本文已影响0人  枫雪幻林

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);
}
上一篇下一篇

猜你喜欢

热点阅读