2

Entity FrameworkでMVC 3アプリケーションを開発し、足場を使用する方法を説明します。MVC 3 - エンティティフレームワーク - 足場検証 - 検証問題

"Type not mappedd issue"を解決するには、手順はhereでした。すべてが現在正常に動作します。

デフォルトの検証は機能していません。必要なフィールドはValidationSummaryに何かを書き込むのではなく例外を発生させるため、属性を使用してカスタム検証を追加します。 問題は、「マッピングされていないタイプの問題」に関する解決策が、2つの.ttファイルと各エンティティの.csファイルを追加したことです。これらのファイルはモデル(.edmx)が変更および保存されるたびに再作成されますそれらのクラスに私のデータ注釈バリデータの属性を入れ、どちらも既に定義されているので、いくつかのプロパティを持つ新しい部分クラスを作成することはできません。

どうすればいいですか? jqueryを使用して検証側のクライアントサイドを移動する必要がありますか?データアノテーションバリデータの属性をエンティティに追加するための回避策があるかもしれませんが、私はこの方法でバリデーションの可視性を高めることをお勧めします。事前

答えて

3

おかげで私はDbContextジェネレータを使用していませんでしたが、POCOジェネレータと同様の問題がありました。ソリューションが似ていると仮定すると:「お客様」は、エンティティの名前です

[MetadataType(typeof(CustomerMetaData))] 

はクラスに余分な属性を追加するエンティティクラスを作成し、T4テンプレートを変更します。

次に、エンティティごとに手動でMetaDataクラスを作成します。必要に応じてT4テンプレートを実際に使用することもできますが、常に実行する必要はありません。

メタデータのクラスは次のようになり...

public class CustomerMetaData 
{ 

    [StringLength(150, ErrorMessage="Maximum length is 150 characters.")] 
    [Required(ErrorMessage="CustomerName is required.")] 
    public virtual string CustomerName 
    { 
     get; 
     set; 
    } 
    public virtual Nullable<int> Type 
    { 
     get; 
     set; 

    } 

    // ... etc ... 
} 

あなたが見ることができるように、あなたは、このように生成されたエンティティクラスからそれを抽象化、メタデータクラスにルールを添付。

+0

t4テンプレートの変更に関するリンクを教えてください。このソリューションは私にはいいと思う... – JasonMenny

+0

私は別のT4テンプレートを使用しているので、具体的な説明は難しいですが、クラス内のソースコードを生成する1つ以上の行がテンプレートにあります部分クラス)を追加し、その前に[MetadataType(typeof(<#= code.Escape(entity)#> MetaData))]という行を挿入します。私は(エンティティ)があなたのテンプレートと同じであると仮定していますが、そうでないかもしれません。クラス宣言から、どの変数名が使用されているかを確認する必要があります。 T4テンプレートは、その構造上、ASPのようなものです。 –

+0

ありがとう、私の中の.ttファイルと私はほとんど完了しました!今度は、すべてが動作するかどうかを確認するためのメタデータクラスを作成します – JasonMenny