private bool TryToAddSSDLColumnToComplexProperty(ComplexProperty complexProperty, Func <MappingBase> mapping, SSDL.Property.Property column)
        {
            var prop = complexProperty.ComplexType.ScalarProperties.FirstOrDefault(p => p.Name == column.Name);

            if (prop != null)
            {
                mapping().AddMapping(prop, column);
                return(true);
            }
            foreach (var complexProp in complexProperty.ComplexType.ComplexProperties)
            {
                if (TryToAddSSDLColumnToComplexProperty(complexProp, () =>
                {
                    var complexMapping = mapping().ComplexMapping;
                    if (complexMapping.ContainsKey(complexProp))
                    {
                        return(complexMapping[complexProp]);
                    }
                    var complexPropMapping = new ComplexPropertyMapping(EntityType, complexProp);
                    complexMapping.Add(complexProp, complexPropMapping);
                    return(complexPropMapping);
                }, column))
                {
                    return(true);
                }
            }
            return(false);
        }
 private bool IsComplexTPC(ComplexPropertyMapping complexPropertyMapping)
 {
     if (EntityType.BaseType == null)
     {
         return(false);
     }
     if (EntityType.BaseType.AllComplexProperties.Any(ecp => ecp == complexPropertyMapping.ComplexProperty))
     {
         return(true);
     }
     return(false);
 }
Exemple #3
0
        public virtual ComplexPropertyMapping GetSpecificMappingCreateIfNull(ComplexProperty complexProperty)
        {
            var value = GetSpecificMapping(complexProperty);

            if (value != null)
            {
                return(value);
            }
            value = new ComplexPropertyMapping(EntityType, complexProperty);
            ComplexMapping.Add(complexProperty, value);
            EntityType.Mapping.OnPropertyChanged("IsCompletlyMapped");
            return(value);
        }
Exemple #4
0
 public ComplexPropertyMapping this[ComplexProperty complexProperty]
 {
     get
     {
         var value = GetMapping(complexProperty);
         if (value != null)
         {
             return(value);
         }
         value = new ComplexPropertyMapping(EntityType, complexProperty);
         ComplexMapping.Add(complexProperty, value);
         EntityType.Mapping.OnPropertyChanged("IsCompletlyMapped");
         return(value);
     }
 }
        private void AddSSDLTable(SSDL.EntityType.EntityType ssdlTable)
        {
            if (MappingInit || ssdlTable == null)
            {
                return;
            }

            foreach (var column in ssdlTable.Properties)
            {
                var prop = EntityType.ScalarProperties.Union(EntityType.Keys).FirstOrDefault(p => p.Name == column.Name);
                if (prop == null)
                {
                    foreach (var complexProp in EntityType.ComplexProperties)
                    {
                        if (TryToAddSSDLColumnToComplexProperty(complexProp,
                                                                () =>
                        {
                            if (ComplexMapping.ContainsKey(complexProp))
                            {
                                return(ComplexMapping[complexProp]);
                            }
                            else
                            {
                                var subComplexMapping = new ComplexPropertyMapping(EntityType, complexProp);
                                ComplexMapping.Add(complexProp, subComplexMapping);
                                return(subComplexMapping);
                            }
                        }, column))
                        {
                            break;
                        }
                    }
                }
                else
                {
                    AddMapping(prop, column);
                }
            }
            OnPropertyChanged("IsCompletlyMapped");
        }
 private bool IsComplexTPC(ComplexPropertyMapping complexPropertyMapping)
 {
     if (EntityType.BaseType == null)
         return false;
     if (EntityType.BaseType.AllComplexProperties.Any(ecp => ecp == complexPropertyMapping.ComplexProperty))
         return true;
     return false;
 }
 private bool TryToAddSSDLColumnToComplexProperty(ComplexProperty complexProperty, Func<MappingBase> mapping, SSDL.Property.Property column)
 {
     var prop = complexProperty.ComplexType.ScalarProperties.FirstOrDefault(p => p.Name == column.Name);
     if (prop != null)
     {
         mapping().AddMapping(prop, column);
         return true;
     }
     foreach (var complexProp in complexProperty.ComplexType.ComplexProperties)
         if (TryToAddSSDLColumnToComplexProperty(complexProp, () =>
             {
                 var complexMapping = mapping().ComplexMapping;
                 if (complexMapping.ContainsKey(complexProp))
                     return complexMapping[complexProp];
                 var complexPropMapping = new ComplexPropertyMapping(EntityType, complexProp);
                 complexMapping.Add(complexProp, complexPropMapping);
                 return complexPropMapping;
             }, column))
             return true;
     return false;
 }
        private void AddSSDLTable(SSDL.EntityType.EntityType ssdlTable)
        {
            if (MappingInit || ssdlTable == null)
                return;

            foreach (var column in ssdlTable.Properties)
            {
                var prop = EntityType.ScalarProperties.Union(EntityType.Keys).FirstOrDefault(p => p.Name == column.Name);
                if (prop == null)
                {
                    foreach (var complexProp in EntityType.ComplexProperties)
                        if (TryToAddSSDLColumnToComplexProperty(complexProp, 
                            () =>
                            {
                                if (ComplexMapping.ContainsKey(complexProp))
                                    return ComplexMapping[complexProp];
                                else
                                {
                                    var subComplexMapping = new ComplexPropertyMapping(EntityType, complexProp);
                                    ComplexMapping.Add(complexProp, subComplexMapping);
                                    return subComplexMapping;
                                }

                            }, column))
                            break;
                }
                else
                    AddMapping(prop, column);
            }
            OnPropertyChanged("IsCompletlyMapped");
        }