private static TypeUsage GetEdmTypeUsage(EdmTypeReference edmTypeReference) { Contract.Requires(edmTypeReference != null); var primitiveTypeFacets = edmTypeReference.PrimitiveTypeFacets; var primitiveTypeKind = edmTypeReference.UnderlyingPrimitiveType.PrimitiveTypeKind; var primitiveType = PrimitiveType.GetEdmPrimitiveType((PrimitiveTypeKind)primitiveTypeKind); if (edmTypeReference.PrimitiveType == EdmPrimitiveType.String) { if ((primitiveTypeFacets.IsUnicode != null) && (primitiveTypeFacets.IsFixedLength != null)) { return (primitiveTypeFacets.MaxLength != null) ? TypeUsage.CreateStringTypeUsage( primitiveType, primitiveTypeFacets.IsUnicode.Value, primitiveTypeFacets.IsFixedLength.Value, primitiveTypeFacets.MaxLength.Value) : TypeUsage.CreateStringTypeUsage( primitiveType, primitiveTypeFacets.IsUnicode.Value, primitiveTypeFacets.IsFixedLength.Value); } } if (edmTypeReference.PrimitiveType == EdmPrimitiveType.Binary) { if (primitiveTypeFacets.IsFixedLength != null) { return (primitiveTypeFacets.MaxLength != null) ? TypeUsage.CreateBinaryTypeUsage( primitiveType, primitiveTypeFacets.IsFixedLength.Value, primitiveTypeFacets.MaxLength.Value) : TypeUsage.CreateBinaryTypeUsage( primitiveType, primitiveTypeFacets.IsFixedLength.Value); } } if ((edmTypeReference.PrimitiveType == EdmPrimitiveType.Time) && (primitiveTypeFacets.Precision != null)) { return TypeUsage.CreateTimeTypeUsage( primitiveType, primitiveTypeFacets.Precision); } if ((edmTypeReference.PrimitiveType == EdmPrimitiveType.DateTime) && (primitiveTypeFacets.Precision != null)) { return TypeUsage.CreateDateTimeTypeUsage( primitiveType, primitiveTypeFacets.Precision); } if ((edmTypeReference.PrimitiveType == EdmPrimitiveType.DateTimeOffset) && (primitiveTypeFacets.Precision != null)) { return TypeUsage.CreateDateTimeOffsetTypeUsage( primitiveType, primitiveTypeFacets.Precision); } if (edmTypeReference.PrimitiveType == EdmPrimitiveType.Decimal) { return ((primitiveTypeFacets.Precision != null) && primitiveTypeFacets.Scale != null) ? TypeUsage.CreateDecimalTypeUsage( primitiveType, primitiveTypeFacets.Precision.Value, primitiveTypeFacets.Scale.Value) : TypeUsage.CreateDecimalTypeUsage(primitiveType); } return TypeUsage.CreateDefaultTypeUsage(primitiveType); }
private void WritePropertyTypeFacets(EdmTypeReference typeRef) { if (typeRef.PrimitiveTypeFacets != null) { foreach (var facet in GetEnumerableFacetValueFromPrimitiveTypeFacets(typeRef.PrimitiveTypeFacets)) { _xmlWriter.WriteAttributeString(facet.Key, facet.Value); } } if (typeRef.IsNullable.HasValue) { _xmlWriter.WriteAttributeString( CsdlConstants.Attribute_Nullable, GetLowerCaseStringFromBoolValue(typeRef.IsNullable.Value)); } }
protected virtual void VisitEdmTypeReference(EdmTypeReference reference) { VisitEdmMetadataItem(reference); if (reference.HasFacets) { VisitEdmPrimitiveTypeFacets(reference.PrimitiveTypeFacets); } }
private static string GetTypeReferenceName(EdmTypeReference typeReference) { Contract.Assert(!typeReference.IsCollectionType, "Primitive, Enum or Complex property type expected"); if (typeReference.IsPrimitiveType) { return GetTypeNameFromPrimitiveTypeKind(typeReference.PrimitiveType.PrimitiveTypeKind); } if (typeReference.IsComplexType) { return GetQualifiedTypeName(CsdlConstants.Value_Self, typeReference.ComplexType.Name); } Contract.Assert(typeReference.IsEnumType); return GetQualifiedTypeName(CsdlConstants.Value_Self, typeReference.EnumType.Name); }