Updates referencesource to .NET 4.7
[mono.git] / mcs / class / referencesource / System.Data.Entity / System / Data / EntityModel / SchemaObjectModel / SchemaComplexType.cs
1 //---------------------------------------------------------------------
2 // <copyright file="SchemaComplexType.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.EntityModel.SchemaObjectModel
11 {
12     using System.Data.Metadata.Edm;
13
14     /// <summary>
15     /// Summary description for NestedType.
16     /// </summary>
17     internal sealed class SchemaComplexType : StructuredType
18     {
19         #region Public Methods
20         /// <summary>
21         /// 
22         /// </summary>
23         /// <param name="parentElement"></param>
24         internal SchemaComplexType(Schema parentElement)
25         :   base(parentElement)
26         {
27             if (Schema.DataModel == SchemaDataModelOption.EntityDataModel)
28                 OtherContent.Add(Schema.SchemaSource);
29         }
30         #endregion
31
32         #region Public Properties
33         #endregion
34
35         #region Protected Methods
36         /// <summary>
37         /// 
38         /// </summary>
39         internal override void ResolveTopLevelNames()
40         {
41             base.ResolveTopLevelNames();
42
43             if ( BaseType != null )
44             {
45                 if ( !(BaseType is SchemaComplexType) )
46                 {
47                     AddError( ErrorCode.InvalidBaseType, EdmSchemaErrorSeverity.Error,
48                         System.Data.Entity.Strings.InvalidBaseTypeForNestedType(BaseType.FQName,FQName));
49                 }
50             }
51         }
52
53         protected override bool HandleElement(Xml.XmlReader reader)
54         {
55             if (base.HandleElement(reader))
56             {
57                 return true;
58             } 
59             else if (CanHandleElement(reader, XmlConstants.ValueAnnotation))
60             {
61                 // EF does not support this EDM 3.0 element, so ignore it.
62                 SkipElement(reader);
63                 return true;
64             }
65             else if (CanHandleElement(reader, XmlConstants.TypeAnnotation))
66             {
67                 // EF does not support this EDM 3.0 element, so ignore it.
68                 SkipElement(reader);
69                 return true;
70             }
71             return false;
72         }
73         #endregion
74     }
75 }