2010-12-12 9 views
2

私はEntity Frameworkを使用して、Webサイトのモデルクラスを作成しています。ここでASP.Net MVCでは、検証用の部分クラスを手動で作成する必要がありますか?

は、クラスに検証プロパティを使用しての例です:だから

using System.ComponentModel.DataAnnotations; 
using System.Collections.Generic; 


namespace Mvc3Razor.Models { 
    public partial class UserModel { 

     [Required] 
     [StringLength(6, MinimumLength = 3)] 
     [Display(Name = "User Name")] 
     [RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed")] 
     [ScaffoldColumn(false)] 
     public string UserName { get; set; } 

     [Required] 
     [StringLength(8, MinimumLength = 3)] 
     [Display(Name = "First Name")] 
     public string FirstName { get; set; } 
     [Required] 
     [StringLength(9, MinimumLength = 2)] 
     [Display(Name = "Last Name")] 
     public string LastName { get; set; } 
     [Required()] 
     public string City { get; set; } 

    } 

、これは動作しますが、それはあなたが多くのテーブルを持っている場合は特に、また、セットアップに痛みだし、多くの分野。

これを行うより良い方法はありますか?

答えて

1

正直、そうでない、または少なくとも私が横断したことはありません。どちらの場合でも、MVCモデル用のデータ(EF)モデルを使用するかどうかにかかわらず、属性を持つクラス(プロパティ)の束を飾る必要があります。

個人的には私のDAL(EF/NHibernate/etc。)と私のUIレイヤー(MVC)の間にビジネスレイヤーを挿入するので、UIのモデルは永続性とは異なります。しかし、私はDALのために持っているのと同じくらい多くの(もしそうでなくても)モデルクラスに属しています。

これはあなたの状況には役立ちませんが、次のバージョンのEFに付属の新しい検証機能を確認し、役立つかどうか確認してください。

+0

あなたのリンクを読んだ後、私は検証ルールを使ってパブリックパブリッククラスを作成し、生成されたEFクラスと組み合わせることができると思いますか? –

+0

EFの次のバージョンでは、モデルにPOCOクラスを使用することもできます。 Scott Guthrieのこのリンク(http://weblogs.asp.net/scottgu/archive/2010/12/08/announcing-entity-framework-code-first-ctp5-release.aspx)で少し話しています。 –

1

なぜビューモデルを使用する必要があるビュー内でモデルを使用していますか?ビューモデルでは、多くのテーブルとフィールドがありません。あなたは、与えられたビューに必要なものだけを持っています。

検証に関しては、個人的にはFluentValidation.NETを使用して、ビューモデルとは別に検証ルールを定義します。

関連する問題