2

ScottGu のブログの EF4 で MVC2 カスタム検証を使用する方法の例: http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

だからここで問題:

VS2010 の Designer が DB のオブジェクトを作成するとき、例に沿って [MetadataType(typeof(Person_validation))] 注釈をそのクラスに追加する必要があります。

しかし、デザイナーで何かを変更すると、これらの注釈はすべて失われます。

edmx ファイルに自分で加えた変更を保持することは可能ですか、または生成されたエンティティに System.ComponentModel.DataAnnotations を適用するより良い方法はありますか?

ありがとう。

4

1 に答える 1

6

大まかに「バディクラス」と呼ばれるパターンで行います。基本的に、メタデータを使用して別のクラスを作成し、生成されたエンティティをバディ クラスに結合する部分クラスを作成します。

簡単な例として、Personエンティティがあり、FirstNameプロパティを必須に設定するとします。これは、生成されたファイルの外で行うことです。

[MedadataType(typeof(PersonMetadata))]
partial class Person { } // the other part is generated by EF4

public class PersonMetadata
{
    // All attributes here will be merged into the generated class,
    // thanks to the partial class above. Just apply attributes as usual.

    [Required]
    public string FirstName { get; set; }
}

このアプローチの詳細については、こちらを参照してください。また、リンク先の記事で、ScottGu も実際にそれについて語っています。「ステップ 5: データベースへの永続化」という見出しの下を見てください ;)

于 2010-05-01T11:44:07.453 に答える