我有一个自动生成的实体框架模型。它是使用数据库优先方法生成的。该mid_initial列具有数据库定义的约束,该约束将列的最大长度限制为 3 个字符。
//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Agency.DataAccess.RegistrationModel
{
    using System;
    using System.Collections.Generic;
    public partial class Registrant
    {
        public Registrant()
        {
        }
        public int id { get; set; }
        public string fname { get; set; }
        public string mid_initial { get; set; }
        public string lname { get; set; }
    }
}
当我尝试创建一个mid_initial大于 3 个字符的模型时,无效状态ModelState.IsValid正在返回 true。因为这个db.SaveChanges,然后被跟注,然后加注DbEntityValidationException。
[HttpPost]
public ActionResult Create(Registrant registrant)
{    
    try
    {
        if (ModelState.IsValid)
        {
            Debug.WriteLine("Entity was valid.");
            db.Registrants.Add(registrant);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View("Create", registrant);
    }
    catch (DbEntityValidationException e)
    {
        foreach (var eve in e.EntityValidationErrors)
        {
            Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                eve.Entry.Entity.GetType().Name, eve.Entry.State);
            foreach (var ve in eve.ValidationErrors)
            {
                Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                    ve.PropertyName, ve.ErrorMessage);
            }
        }
        return View(registrant);
    }
}
为什么ModelState.IsValid方法返回true?我的模型似乎不知道最大长度约束。我如何让它知道?