2

ベスト プラクティスに関する簡単な質問。

私は1つのプロジェクトMVC3 +かみそりを持っており、クラスの各プロパティで、次のような検証を行っています。

    [StringLength(20)]
    [RegularExpression(@"^[1-9][0-9]*$",ErrorMessage="Only Numbers Allowed") ]
    [Required(AllowEmptyStrings = false, ErrorMessage = "Please Inform The Code")]
    [Display(Name = "Code")]
    public string gCode { get; set; }

これは、たとえば、私のモデルの Customer クラスにあります。検証は UI で完全に機能します。

2 番目のプロジェクトでは、最初に Entity Framework - データベースを使用する場合、エンティティを含む edmx ファイルがあり、ObjectContext を使用してデータベースにクエリを実行します。これは、Customer クラスが EF によって構築されることを意味します。

これらの検証をどこに追加すればよいですか?

4

1 に答える 1

3

モデルには最初にこの問題がありますが、MetaData を使用して解決できます。と呼ばれる生成されたエンティティと、属性でField装飾したい値フィールドがあるとします。次のようにします。[Required]

namespace Model.Entities {

    [MetadataType(typeof(FieldMetadata))]
    public partial class Field : EntityBase {

    }

    class FieldMetadata {
        [Required]
        public object Value;
    }
}

ここでは、変更できない既存のクラスのメンバーの Value メンバーにメタデータを追加しています。

編集: うまくいかない場合は、TypeDescriptor も呼び出します。

TypeDescriptor.AddProvider(new AssociatedMetadataTypeTypeDescriptionProvider(typeof(Field), typeof(FieldMetadata)), typeof(Field));
于 2012-08-29T13:35:17.410 に答える