0

大多数有关实体框架的MVC教程均以Code-First为中心,您可以在其中编写用于生成模型的类。这提供了控制和迁移的优势,但我认为它缺乏概述。因此,我宁愿使用图形设计器来创建模型,但我无法看到数据迁移在这种情况下是如何工作的或者数据迁移工作的。看来,当我更改模型(使用数据库中的数据)时,所有表中的所有数据都将被删除。MVC代码或模型优先

  1. 有没有办法解决这个问题?
  2. 如何在使用Model-First时进行验证?部分班级?

回答

0

您可以使用全局验证MVC验证旁边 例如:

public class ValidationCriteria 
{ 
    public ValidType Type { get; set; } 
    public ValidRange Range { get; set; } 
    public ValidFormat Format { get; set; } 
    public ValidIsNull IsNull { get; set; } 
    public ValidCompare Compare { get; set; } 
    public ValidDB DB { get; set; } 
    public string Trigger { get; set; } 
    public Dictionary<string, ValidationCriteria> Before { get; set; } 
    public string After { get; set; } 


    public class ValidDB 
    { 
     public string functionName { get; set; } 
     public object[] param { get; set; } 
     public object functionClass { get; set; } 
     public string msg { get; set; } 
     public bool check = false; 
    } 
    public class ValidCompare 
    { 
     public string first { get; set; } 
     public string second { get; set; } 
     public string compareOperator { get; set; } 
     public string compareValue { get; set; } 
     public string msg { get; set; } 
     public bool check = false; 


    } 
    public ValidationCriteria() 
    { 
     this.Range = new ValidRange(); 
     this.Format = new ValidFormat(); 
     this.IsNull = new ValidIsNull(); 
     this.Type = new ValidType(); 
     this.Compare = new ValidCompare(); 
     this.DB = new ValidDB(); 

     this.Trigger = "blur"; 
     this.Before = new Dictionary<string, ValidationCriteria>(); 
     this.After = ""; 
    } 
    public class ValidType 
    { 
     // checking element is integer. 
     public bool isInt { get; set; } 
     // checking element is decimal. 
     public bool isDecimal { get; set; } 
     public string msg { get; set; } 
     public bool check = false; 
    } 
    public class ValidRange 
    { 
     public long min { get; set; } 
     public long max { get; set; } 
     public string msg { get; set; } 
     public bool check = false; 
    } 
    public class ValidFormat 
    { 
     public bool isEmail { get; set; } 
     public string regex { get; set; } 
     public string msg { get; set; } 
     public bool check = false; 
    } 

    public class ValidIsNull 
    { 
     public string nullDefaultVal { get; set; } 
     public string msg { get; set; } 
     public bool check = false; 
    } 



} 

同时你可能在你的控制器使用验证部分 例子:

private bool validateMaintainanceManagement(MaintainanceCRUD.Maintainance model, bool edit = false, bool ServerValidation = true) 
    { 
     bool ValidModel = false; 

     Dictionary<string, ValidationCriteria> validCriteria = new Dictionary<string, ValidationCriteria>(); 

     #region maintainTitle Criteria 

     ValidationCriteria maintainTitle = new ValidationCriteria(); 

     maintainTitle.IsNull.msg = Resources.Home.ErrmaintainTitle; 
     maintainTitle.IsNull.check = true; 
     maintainTitle.IsNull.nullDefaultVal = "-1"; 

     //maintainTitle.Trigger = "change"; // this may trigger if you are using dropdown 
     validCriteria.Add("maintainTitle", maintainTitle); 
     #endregion