0

Entity Framework を使用した MVC のチュートリアルのほとんどは、モデルを生成するためのクラスを記述する Code-First を中心にしています。これにより、制御と移行の利点が得られますが、概要が不足していると思います。したがって、グラフィカル デザイナーを使用してモデルを作成したいと思いますが、このコンテキストでデータ移行がどのように機能するか、または機能するかどうかを確認できません。モデルを(データベース内のデータで)変更すると、すべてのデータがすべてのテーブルで削除されるようです。

  1. これを回避する方法はありますか?
  2. Model-First の使用時に検証を行うにはどうすればよいですか? 部分授業?
4

1 に答える 1

0

mvc validation example の横にグローバル検証を使用できます。

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
于 2013-10-30T09:30:50.147 に答える