我的要求是全局配置字符串长度映射,但也可以使用 MaxLengthAttribute 专门配置一个属性。这是我的代码:
public class StringLengthConvention
: IConfigurationConvention<PropertyInfo, StringPropertyConfiguration>
{
public void Apply(
PropertyInfo propertyInfo,
Func<StringPropertyConfiguration> configuration)
{
StringAttribute[] stringAttributes = (StringAttribute[])propertyInfo.GetCustomAttributes(typeof(StringAttribute),true);
if (stringAttributes.Length > 0)
{
configuration().MaxLength = stringAttributes [0].MaxLength;
}
}
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add<StringLengthConvention>();
}
public class ContentInfo
{
// ...
[MaxLength(200)]
[String]
public string TitleIntact { get; set; }
// ...
}
我的问题是“MaxLength”不能再工作了。在 StringLengthConvention.Apply() 中应用全局配置之前,我是否需要检查属性是否具有 MaxLengthAttribute?