public static bool GetIsFixedLength(this TypeUsage tu, bool defaultValue = false)
        {
            if (!tu.IsPrimitiveTypeOf(PrimitiveTypeKind.String) && !tu.IsPrimitiveTypeOf(PrimitiveTypeKind.Binary))
            {
                return(defaultValue);
            }

            return(tu.Facets[DbProviderManifest.FixedLengthFacetName].Value == null ? defaultValue : (bool)tu.Facets[DbProviderManifest.FixedLengthFacetName].Value);
        }
        public static bool TryGetIsFixedLength(this TypeUsage tu, out bool isFixedLength)
        {
            isFixedLength = false;

            if (!tu.IsPrimitiveTypeOf(PrimitiveTypeKind.String) &&
                !tu.IsPrimitiveTypeOf(PrimitiveTypeKind.Binary))
            {
                return(false);
            }

            Facet f;

            if (!tu.Facets.TryGetValue(DbProviderManifest.FixedLengthFacetName, true, out f))
            {
                return(false);
            }

            return(f.Value == null ? false : (bool)f.Value);
        }
        public static bool TryGetMaxLength(this TypeUsage tu, out int maxLength)
        {
            maxLength = 0;

            if (!tu.IsPrimitiveTypeOf(PrimitiveTypeKind.String) && !tu.IsPrimitiveTypeOf(PrimitiveTypeKind.Binary))
            {
                return(false);
            }

            Facet f;

            if (tu.Facets.TryGetValue(DbProviderManifest.MaxLengthFacetName, false, out f))
            {
                if (!f.IsUnbounded && f.Value != null)
                {
                    maxLength = (int)f.Value;
                    return(true);
                }
            }
            return(false);
        }