美文网首页
【EntityFramework-4】Fluent API配置

【EntityFramework-4】Fluent API配置

作者: 枫雪幻林 | 来源:发表于2017-06-14 23:34 被阅读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);
    }
    

    相关文章

      网友评论

          本文标题:【EntityFramework-4】Fluent API配置

          本文链接:https://www.haomeiwen.com/subject/oxgeqxtx.html