zoukankan      html  css  js  c++  java
  • Entity Framework Tutorial Basics(40):Validate Entity

    Validate Entity

    You can write custom server side validation for any entity. To accomplish this, override ValidateEntity method of DBContext as shown below.

    protected override System.Data.Entity.Validation.DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry, System.Collections.Generic.IDictionary<object, object> items)
    {
        if (entityEntry.Entity is Student)
        {
            if (entityEntry.CurrentValues.GetValue<string>("StudentName") == "")
            {
                var list = new List<System.Data.Entity.Validation.DbValidationError>();
                list.Add(new System.Data.Entity.Validation.DbValidationError("StudentName", "StudentName is required"));
    
                return new System.Data.Entity.Validation.DbEntityValidationResult(entityEntry, list);
            }
        }
        return base.ValidateEntity(entityEntry, items);
    }

    As you can see in the above code, we are validating the Student entity. If StudentName is blank, then we are adding DBValidationError into DBEntityValidationResult. So whenever you call DBContext.SaveChanges method and you try to save Student entity without StudentName, then it will throw DbEntityValidationException. For example:

    try
    {
        using (var ctx = new SchoolDBEntities())
        {
            ctx.Students.Add(new Student() { StudentName = "" });
            ctx.Standards.Add(new Standard() { StandardName = "" });
    
            ctx.SaveChanges();
        }
    }
    catch (DbEntityValidationException dbEx)
    {
        foreach (DbEntityValidationResult entityErr in dbEx.EntityValidationErrors)
        {
            foreach (DbValidationError error in entityErr.ValidationErrors)
            {
                Console.WriteLine("Error Property Name {0} : Error Message: {1}",
                                    error.PropertyName, error.ErrorMessage);
            }
        }
    }
  • 相关阅读:
    Heartbeat实现热备
    rsync实现数据增量备份
    MySql重置密码
    media viewport
    Java操作Excel之JXL (填充EXCEL模板)转载
    字节流与字符流的区别详解
    GIT和SVN的区别
    oracle与DB2递归查询
    SQL中使用WITH AS提高性能 简化嵌套SQL(转载)
    CVS tag and branch(转)
  • 原文地址:https://www.cnblogs.com/purplefox2008/p/5649464.html
Copyright © 2011-2022 走看看