2010-12-18 11 views
3

NerdDinner MVCアプリケーションを作成する方法をScott Hanselmanの書籍で説明しています。Visual Studioまたはプラグインに、バディークラスの検証を自動化するためのツールがありますか?

エンティティデータモデルウィザードによって生成されたエンティティタイプディナーを検証するために、彼は部分クラスのトリックを使用して最初にエンティティディナーを拡張し、次にバディクラスをディナーに関連付けるようにしました。

詳細については、次のコードを参照してください。

using System.ComponentModel.DataAnnotations; 

namespace NerdDinner.Models 
{ 
    [MetadataType(typeof(DinnerValidation))] 
    public partial class Dinner { } 

    public class DinnerValidation 
    { 
     [Required(ErrorMessage = "Title is required")] 
     [StringLength(50, ErrorMessage = "Title may not be longer than 50 characters")] 
     public string Title { get; set; } 

     [Required(ErrorMessage = "Description is required")] 
     [StringLength(256, ErrorMessage = "Description may not be longer than 256 characters")] 
     public string Description { get; set; } 

     [Required(ErrorMessage = "Addresss is required")] 
     public string Address { get; set; } 

     [Required(ErrorMessage = "Country is required")] 
     public string Country { get; set; } 

     [Required(ErrorMessage = "Contact phone is required")] 
     public string ContactPhone { get; set; } 
    } 
} 

私の質問は

でディナーにバディクラスを作成して関連付ける「便利」な方法はありますか?つまり、Visual Studioやプラグインでツールを使用してバディクラスを作成し、バディとディナーを自動的に関連付けることができます。もちろん、私のニーズに合わせて生成されたコードを調整する必要がありますが、それは大きな問題ではありません。

編集1: 私はいくつかの追加情報を追加します。エンティティデータモデルウィザードは、データベーススキーマに基づいてスキーマ検証を作成するため役立ちます。たとえば、DinnerIdプロパティは、int型のDinnerID列の型と一致するように、デフォルトでInt32に設定されます。

答えて

0

はい。ドメインサービスを作成しているようです。その場合、ドメインサービスを作成するときには、generated associated classes for metadata(ウィンドウの一番下)にオプションがあります。ファイル名はyourDomainServiceName.metadata.csとなります。

このファイルにはフィールドに注釈が含まれないため、自分で作成する必要があります。

1

エンティティデータモデルウィザードでは、すぐに使用することはできません。しかし、あなたができることはジェネレータ(エンティティを生成する.ttファイル)を拡張し、[MetadataType(typeof(<#classname#> Validation))]を追加させることです。このようにして、生成されたエンティティはすべて既にバディ分類の準備が整っています。次に、別の部分クラスを設定して関連付けを行う必要はありません。次に、手作業でバディクラスを作成したり、最終的に "Microsoft"生成エンティティと一緒にバディクラスを生成することができます。別のファイルまたはすべてのバディクラスを含む1つのファイルです。セルフトラッキングエンティティで説明したのと同じ方法を使用します。そして、最初は少し仕事がありました。しかし、それは本当にそれの価値がある。クライアント側、サービス層、ビジネスアクセス層など、任意の時点で検証できる頑丈なクラスがあるため、データベースからすべての検証基準を設定する必要があります。私たちは.edmxからこれを生成する方法を見てきましたが、30以上のクラスで手で指定するのがより魅力的であることがわかりました。数時間働いていますが、その後はショータイムです! ;)おそらく保守性が低く、生成されたバディークラスと自動生成された検証基準がありますが、どこでもトレードオフです(標準テンプレートを拡張する日/週を費やしています)。がんばろう!

+0

.ttファイルをカスタマイズする方法に関する良いチュートリアルはありますか?私はこの高度な方法を行うことを考えていない。 – xport

+0

私の頭の中から分からない...少しの研究をすることでさらに推測するのに役立つでしょう...そしてちょっと実験するとあなたが学ぶのを助けるでしょう、私はT4のテンプレートをいくつか変更しました。エラーと私の構造化された心capabillitiesを使用する;) –

関連する問題