Updates referencesource to .NET 4.7
[mono.git] / mcs / class / referencesource / System.Data.Entity / System / Data / Mapping / ObjectMemberMapping.cs
1 //---------------------------------------------------------------------
2 // <copyright file="ObjectMemberMapping.cs" company="Microsoft">
3 //      Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 //
6 // @owner       Microsoft
7 // @backupOwner Microsoft
8 //---------------------------------------------------------------------
9
10 using System;
11 using System.Collections.Generic;
12 using System.Text;
13 using System.Xml;
14 using System.Data.Metadata.Edm;
15
16 namespace System.Data.Mapping {
17     /// <summary>
18     /// Mapping metadata for all OC member maps.
19     /// </summary>
20     internal abstract class ObjectMemberMapping
21     {
22         #region Constructors
23         /// <summary>
24         /// Constrcut a new member mapping metadata object
25         /// </summary>
26         /// <param name="edmMember"></param>
27         /// <param name="clrMember"></param>
28         protected ObjectMemberMapping(EdmMember edmMember, EdmMember clrMember)
29         {
30             System.Diagnostics.Debug.Assert(edmMember.BuiltInTypeKind == clrMember.BuiltInTypeKind, "BuiltInTypeKind must be the same");
31             this.m_edmMember = edmMember;
32             this.m_clrMember = clrMember;
33         }
34         #endregion
35
36         #region Fields
37         #region Internal
38         EdmMember m_edmMember;  //EdmMember metadata representing the Cdm member for which the mapping is specified
39         EdmMember m_clrMember;  //EdmMember metadata representing the Clr member for which the mapping is specified
40         #endregion
41         #endregion
42
43         #region Properties
44         /// <summary>
45         /// The PropertyMetadata object that represents the Cdm member for which mapping is being specified
46         /// </summary>
47         internal EdmMember EdmMember
48         {
49             get
50             {
51                 return this.m_edmMember;
52             }
53         }
54
55         /// <summary>
56         /// The PropertyMetadata object that represents the Clr member for which mapping is being specified
57         /// </summary>
58         internal EdmMember ClrMember
59         {
60             get
61             {
62                 return this.m_clrMember;
63             }
64         }
65
66         /// <summary>
67         /// Returns the member mapping kind
68         /// </summary>
69         internal abstract MemberMappingKind MemberMappingKind { get; }
70         #endregion
71     }
72
73     /// <summary>
74     /// Represents the various kind of member mapping
75     /// </summary>
76     internal enum MemberMappingKind
77     {
78         ScalarPropertyMapping = 0,
79
80         NavigationPropertyMapping = 1,
81
82         AssociationEndMapping =2,
83
84         ComplexPropertyMapping = 3,
85     }
86 }