MVCでEFを使うテクニック集

10299 ワード

1.データベースからモデルを生成した後、再度モデルを更新すると、前に設定した検証ルールが失われます.
解決方法:Modelsフォルダに空白クラスを新規作成し、shujuyanzhと名前を付けます.cs(クラス名は自定可能)、そしてModelsで自動的に生成されたモデルのxxxx.ttファイル内のデータベース内のテーブルと同名のもの.csの内容はshujuyanzhにコピーする.csでは、関連する各項目にデータ・ルールを追加します.
次の例を示します.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace     .Models
{
    public class danganyz
    {
        [Required(ErrorMessage="    ")]
        [StringLength(10)]
        [Display(Name = "    ")]
        public string      { get; set; }


        [Required(ErrorMessage="    ")]
        [StringLength(100)]
        [Display(Name = "    ")]
        public string      { get; set; }



        [Required(ErrorMessage="    ")]
        [Range(1,500)]
        [Display(Name = "    ")]
        public int      { get; set; }


        [Required(ErrorMessage="    ")]
        [Range(0, 50)]
        [Display(Name = "    ")]
        public int      { get; set; }



        [Required(ErrorMessage="    ")]
        [Range(0, 50)]
        [Display(Name = "    ")]
        public int      { get; set; }


        [Required(ErrorMessage="    ")]
        [StringLength(20)]
        [Display(Name = "    ")]
        public string      { get; set; }



        [Required(ErrorMessage="    ")]
        [Display(Name="    ")]
        public System.DateTime      { get; set; }



        [Required(ErrorMessage="    ")]
        [StringLength(10)]
        [Display(Name = "    ")]
        public string      { get; set; }


        [Required(ErrorMessage="    ")]
        [StringLength(10)]
        [Display(Name = "    ")]
        public string      { get; set; }


        [Required(ErrorMessage="    ")]
        [StringLength(10)]
        [Display(Name = "    ")]
        public string      { get; set; }


        [StringLength(255)]
        [Display(Name = "    ")]
        public string      { get; set; }
    }
}

2.Modelsフォルダに空白のクラスを新規作成します.cs(ここではクラス名は自定可能)は、自動的に生成されたクラスを削除し、以下のコードを追加します.各クラスはpartialクラスとマークされていることに注意してください.
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace     .Models
{
       [MetadataType(typeof(danganyz))]
        public partial class dangan { }
}

これにより、データベースに基づいてモデルを更新するときに、設定した検証ルールが失われず、更新後に新しく追加するフィールドをshujuyanzhにする必要があります.csは検証ルールを追加します.メリットは明らかです.
3、コントローラとビューを追加します.