プロジェクトでEF 4.1「データベースファースト」を使用しています。T4 テンプレートを使用して、生成されたプロパティを Required、DisplayName、MaxLength などの属性で条件付きで装飾しています。T4 テンプレートの WriteProperty メソッド内には、次のようなものがあります。
var maxLength = edmProperty.TypeUsage.Facets.Where(f => f.Name == "MaxLength").FirstOrDefault();
if (maxLength != null && maxLength.Value.ToString() != "Max")
{#>
[MaxLength(<#= maxLength.Value #>, ErrorMessage = "<#=edmProperty.Documentation != null ? edmProperty.Documentation.LongDescription : edmProperty.Name #> cannot exceed <#=maxLength.Value #> characters.")]
<#+}
これは、edmx から推測できる情報に対してはうまく機能しますが、カスタムで単に利用できないものもあります。
EmailAddress
例として、カスタムの正規表現型属性でプロパティを装飾したいとします。モデル内の電子メール アドレス フィールドを自動的に「選別」し、プロパティの名前を確認せずにこの属性を適用するにはどうすればよいですか?
おそらく EdmProperty を「拡張」して、IsEmailAddress などのカスタム プロパティを追加する方法はありますか?
ありがとう!