536cd135cc
Former-commit-id: 5624ac747d633e885131e8349322922b6a59baaa
87 lines
2.9 KiB
C#
87 lines
2.9 KiB
C#
//---------------------------------------------------------------------
|
|
// <copyright file="PrimitiveSchema.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//
|
|
// @owner Microsoft
|
|
// @backupOwner Microsoft
|
|
//---------------------------------------------------------------------
|
|
namespace System.Data.EntityModel.SchemaObjectModel
|
|
{
|
|
using System.Collections.Generic;
|
|
using System.Data.Common;
|
|
using System.Data.Metadata.Edm;
|
|
using System.Linq;
|
|
using System.Xml;
|
|
|
|
/// <summary>
|
|
/// The virtual schema for primitive data types
|
|
/// </summary>
|
|
internal class PrimitiveSchema : Schema
|
|
{
|
|
public PrimitiveSchema(SchemaManager schemaManager)
|
|
: base(schemaManager)
|
|
{
|
|
Schema = this;
|
|
|
|
DbProviderManifest providerManifest = ProviderManifest;
|
|
if (providerManifest == null)
|
|
{
|
|
AddError(new EdmSchemaError(System.Data.Entity.Strings.FailedToRetrieveProviderManifest,
|
|
(int)ErrorCode.FailedToRetrieveProviderManifest,
|
|
EdmSchemaErrorSeverity.Error));
|
|
}
|
|
else
|
|
{
|
|
IList<PrimitiveType> primitiveTypes = providerManifest.GetStoreTypes();
|
|
|
|
// EDM Spatial types are only available to V3 and above CSDL.
|
|
if (schemaManager.DataModel == SchemaDataModelOption.EntityDataModel &&
|
|
schemaManager.SchemaVersion < XmlConstants.EdmVersionForV3)
|
|
{
|
|
primitiveTypes = primitiveTypes.Where(t => !Helper.IsSpatialType(t))
|
|
.ToList();
|
|
}
|
|
|
|
foreach (PrimitiveType entry in primitiveTypes)
|
|
{
|
|
TryAddType(new ScalarType(this, entry.Name, entry), false /*doNotAddErrorForEmptyName*/);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns the alias that can be used for type in this
|
|
/// Namespace instead of the entire namespace name
|
|
/// </summary>
|
|
internal override string Alias
|
|
{
|
|
get
|
|
{
|
|
return ProviderManifest.NamespaceName;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns the TypeAuthority that is driving this schema
|
|
/// </summary>
|
|
internal override string Namespace
|
|
{
|
|
get
|
|
{
|
|
if (ProviderManifest != null)
|
|
{
|
|
return ProviderManifest.NamespaceName;
|
|
}
|
|
return string.Empty;
|
|
}
|
|
}
|
|
|
|
protected override bool HandleAttribute(XmlReader reader)
|
|
{
|
|
// don't call the base, we don't have any attributes
|
|
return false;
|
|
}
|
|
}
|
|
}
|