public override string GetSqlName(PropertyDescriptor propertyDescriptor, ConstraintDefaultsConfiguration constraintDefaults)
{
var sizeConstraintAttribute = propertyDescriptor?.PropertyInfo.GetFirstCustomAttribute<SizeConstraintAttribute>(true);
if (sizeConstraintAttribute != null || constraintDefaults?.StringSizeFlexibility != null)
{
switch ((constraintDefaults?.StringSizeFlexibility ?? sizeConstraintAttribute.SizeFlexibility))
{
case SizeFlexibility.Fixed:
return CreateFixedTypeName(sizeConstraintAttribute.MaximumLength);
case SizeFlexibility.Variable:
return CreateVariableName(sizeConstraintAttribute.MaximumLength);
case SizeFlexibility.LargeVariable:
return CreateTextName();
default:
throw new NotSupportedException("SizeFlexibility: " + sizeConstraintAttribute.SizeFlexibility);
}
}
else
{
if (propertyDescriptor != null && (propertyDescriptor.IsPrimaryKey || propertyDescriptor.HasUniqueAttribute || propertyDescriptor.IndexAttributes.Count > 0))
{
return this.CreateVariableName(this.constraintDefaultsConfiguration.IndexedStringMaximumLength);
}
else
{
return this.CreateVariableName((constraintDefaults ?? this.constraintDefaultsConfiguration).StringMaximumLength);
}
}
}