我在项目中使用 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 之类的自定义属性?
谢谢!