可以为实体实现自定义验证,重写DBContext中的个ValidateEntity方法
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); }
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); } } }