//--------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner Microsoft // @backupOwner Microsoft //--------------------------------------------------------------------- using System.Data.Common; using System.Diagnostics; namespace System.Data.Metadata.Edm { internal class FacetValues { private FacetValueContainer _nullable; private FacetValueContainer _maxLength; private FacetValueContainer _unicode; private FacetValueContainer _fixedLength; private FacetValueContainer _precision; private FacetValueContainer _scale; internal FacetValueContainer Nullable { set { _nullable = value; } } internal FacetValueContainer MaxLength { set { _maxLength = value; } } internal FacetValueContainer Unicode { set { _unicode = value; } } internal FacetValueContainer FixedLength { set { _fixedLength = value; } } internal FacetValueContainer Precision { set { _precision = value; } } internal FacetValueContainer Scale { set { _scale = value; } } internal bool TryGetFacet(FacetDescription description, out Facet facet) { if (description.FacetName == DbProviderManifest.NullableFacetName) { if (_nullable.HasValue) { facet = Facet.Create(description, _nullable.GetValueAsObject()); return true; } } else if (description.FacetName == DbProviderManifest.MaxLengthFacetName) { if (_maxLength.HasValue) { facet = Facet.Create(description, _maxLength.GetValueAsObject()); return true; } } else if (description.FacetName == DbProviderManifest.UnicodeFacetName) { if (_unicode.HasValue) { facet = Facet.Create(description, _unicode.GetValueAsObject()); return true; } } else if (description.FacetName == DbProviderManifest.FixedLengthFacetName) { if (_fixedLength.HasValue) { facet = Facet.Create(description, _fixedLength.GetValueAsObject()); return true; } } else if (description.FacetName == DbProviderManifest.PrecisionFacetName) { if (_precision.HasValue) { facet = Facet.Create(description, _precision.GetValueAsObject()); return true; } } else if (description.FacetName == DbProviderManifest.ScaleFacetName) { if (_scale.HasValue) { facet = Facet.Create(description, _scale.GetValueAsObject()); return true; } } facet = null; return false; } internal static FacetValues NullFacetValues { get { // null out everything except Nullable, and DefaultValue FacetValues values = new FacetValues(); values.FixedLength = (bool?)null; values.MaxLength = (int?)null; values.Precision = (byte?)null; values.Scale = (byte?)null; values.Unicode = (bool?)null; return values; } } } }