1 //---------------------------------------------------------------------
2 // <copyright file="StorageScalarPropertyMapping.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
8 //---------------------------------------------------------------------
10 using System.Diagnostics;
11 using System.Collections.Generic;
13 using System.Data.Metadata.Edm;
14 using System.Data.Mapping.ViewGeneration.Utils;
16 namespace System.Data.Mapping {
18 /// Mapping metadata for scalar properties.
21 /// For Example if conceptually you could represent the CS MSL file as following
23 /// --EntityContainerMapping ( CNorthwind-->SNorthwind )
24 /// --EntitySetMapping
25 /// --EntityTypeMapping
28 /// --ScalarPropertyMap ( CMemberMetadata-->SMemberMetadata )
29 /// --ScalarPropertyMap ( CMemberMetadata-->SMemberMetadata )
30 /// --EntityTypeMapping
33 /// --ScalarPropertyMap ( CMemberMetadata-->SMemberMetadata )
34 /// --ComplexPropertyMap
35 /// --ScalarPropertyMap ( CMemberMetadata-->SMemberMetadata )
36 /// --ScalarProperyMap ( CMemberMetadata-->SMemberMetadata )
37 /// --ScalarPropertyMap ( CMemberMetadata-->SMemberMetadata )
38 /// --AssociationSetMapping
39 /// --AssociationTypeMapping
42 /// --ScalarPropertyMap ( CMemberMetadata-->SMemberMetadata )
43 /// --ScalarProperyMap ( CMemberMetadata-->SMemberMetadata )
45 /// --ScalarPropertyMap ( CMemberMetadata-->SMemberMetadata )
46 /// This class represents the metadata for all the scalar property map elements in the
49 internal class StorageScalarPropertyMapping : StoragePropertyMapping {
52 /// Construct a new Scalar EdmProperty mapping object
54 /// <param name="member"></param>
55 /// <param name="columnMember"></param>
56 internal StorageScalarPropertyMapping(EdmProperty member, EdmProperty columnMember)
58 Debug.Assert(columnMember != null);
60 Helper.IsScalarType(member.TypeUsage.EdmType),
61 "StorageScalarPropertyMapping must only map primitive or enum types");
62 Debug.Assert(Helper.IsPrimitiveType(columnMember.TypeUsage.EdmType), "StorageScalarPropertyMapping must only map primitive types");
63 this.m_columnMember = columnMember;
69 /// S-side member for which the scalar property is being mapped.
70 /// This will be interpreted by the view generation algorithm based on the context.
72 EdmProperty m_columnMember;
77 /// column name from which the sclar property is being mapped
79 internal EdmProperty ColumnProperty
82 return this.m_columnMember;
89 /// This method is primarily for debugging purposes.
90 /// Will be removed shortly.
92 /// <param name="index"></param>
93 internal override void Print(int index) {
94 StorageEntityContainerMapping.GetPrettyPrintString(ref index);
95 StringBuilder sb = new StringBuilder();
96 sb.Append("ScalarPropertyMapping");
98 if (this.EdmProperty != null) {
100 sb.Append(this.EdmProperty.Name);
103 if (this.ColumnProperty != null) {
104 sb.Append("Column Name:");
105 sb.Append(this.ColumnProperty.Name);
107 Console.WriteLine(sb.ToString());