Updates referencesource to .NET 4.7
[mono.git] / mcs / class / referencesource / System.Data.Entity / System / Data / Metadata / ModelPerspective.cs
1 //---------------------------------------------------------------------
2 // <copyright file="ModelPerspective.cs" company="Microsoft">
3 //      Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 //
6 // @owner       Microsoft
7 // @backupOwner Microsoft
8 //---------------------------------------------------------------------
9
10 namespace System.Data.Metadata.Edm
11 {
12     using System.Collections.Generic;
13     using System.Globalization;
14
15     /// <summary>
16     /// Internal helper class for query
17     /// </summary>
18     internal class ModelPerspective : Perspective
19     {
20         #region Contructors
21         /// <summary>
22         /// Creates a new instance of perspective class so that query can work
23         /// ignorant of all spaces
24         /// </summary>
25         /// <param name="metadataWorkspace">runtime metadata container</param>
26         internal ModelPerspective(MetadataWorkspace metadataWorkspace)
27             : base(metadataWorkspace, DataSpace.CSpace)
28         {
29         }
30         #endregion
31
32         #region Methods
33         /// <summary>
34         /// Look up a type in the target data space based upon the fullName
35         /// </summary>
36         /// <param name="fullName">fullName</param>
37         /// <param name="ignoreCase">true for case-insensitive lookup</param>
38         /// <param name="typeUsage">The type usage object to return</param>
39         /// <returns>True if the retrieval succeeded</returns>
40         internal override bool TryGetTypeByName(string fullName, bool ignoreCase, out TypeUsage typeUsage )
41         {
42             EntityUtil.CheckStringArgument(fullName, "fullName");
43             typeUsage = null;
44             EdmType edmType = null;
45             if (this.MetadataWorkspace.TryGetItem<EdmType>(fullName, ignoreCase, this.TargetDataspace, out edmType))
46             {
47                 if (Helper.IsPrimitiveType(edmType))
48                 {
49                     typeUsage = this.MetadataWorkspace.GetCanonicalModelTypeUsage(((PrimitiveType)edmType).PrimitiveTypeKind);
50                 }
51                 else
52                 {
53                     typeUsage = TypeUsage.Create(edmType);
54                 }
55             }
56             return typeUsage != null;
57         }
58         #endregion
59     }
60 }