Пример #1
0
 /// <summary>
 /// Adds a navigation property to the entity type.
 /// </summary>
 /// <param name="navigationPropertyName">Name of the navigation property.</param>
 /// <param name="modelAssociationSet">Association set that this navigation property is based on.</param>
 /// <param name="fromRoleName">From-role. Normally the same as the from-role for the associationset, but can be reversed for recursive associations.</param>
 /// <param name="fromRoleName">To-role. Normally the same as the To-role for the associationset, but can be reversed for recursive associations.</param>
 /// <returns>A NavigationProperty object.</returns>
 public NavigationProperty AddNavigationMember(string navigationPropertyName, ModelAssociationSet modelAssociationSet, string fromRoleName, string toRoleName)
 {
     try
     {
         if (!NavigationProperties.Any(np => np.Name.Equals(navigationPropertyName)) &&
             !MemberProperties.Any(mp => mp.Name.Equals(navigationPropertyName)) &&
             navigationPropertyName != this.Name)
         {
             NavigationProperty navigationProperty = new NavigationProperty(ParentFile, this, navigationPropertyName, modelAssociationSet, _entityTypeElement, fromRoleName, toRoleName);
             _navigationProperties.Add(navigationProperty.Name, navigationProperty);
             navigationProperty.NameChanged += new EventHandler <NameChangeArgs>(navprop_NameChanged);
             navigationProperty.Removed     += new EventHandler(navprop_Removed);
             return(navigationProperty);
         }
         else
         {
             throw new ArgumentException("A property named " + navigationPropertyName + " already exist in the type " + this.Name);
         }
     }
     catch (Exception ex)
     {
         try
         {
             ExceptionTools.AddExceptionData(ex, this);
         }
         catch { }
         throw;
     }
 }
Пример #2
0
 /// <summary>
 /// Adds a scalar member to this entity type.
 /// </summary>
 /// <param name="name">Name of the new member property.</param>
 /// <param name="type">Type of the new member property.</param>
 /// <param name="nullable">Nullable; true or false.</param>
 /// <param name="ordinal">Ordinal position within the entity type.</param>
 /// <returns>A ModelMemberProperty object.</returns>
 public ModelMemberProperty AddMember(string name, Type type, bool nullable, int ordinal)
 {
     try
     {
         if (!MemberProperties.Where(mp => mp.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase)).Any() &&
             !NavigationProperties.Any(np => np.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase)) &&
             name != this.Name)
         {
             ModelMemberProperty mp = new ModelMemberProperty(base.ParentFile, this, name, ordinal, _entityTypeElement);
             mp.Type     = type;
             mp.Nullable = nullable;
             _memberProperties.Add(name, mp);
             mp.NameChanged += new EventHandler <NameChangeArgs>(prop_NameChanged);
             mp.Removed     += new EventHandler(prop_Removed);
             return(mp);
         }
         else
         {
             throw new ArgumentException("A property with the name " + name + " already exist in the type " + this.Name);
         }
     }
     catch (Exception ex)
     {
         try
         {
             ExceptionTools.AddExceptionData(ex, this);
         }
         catch { }
         throw;
     }
 }
Пример #3
0
        public IEnumerable<MemberInfo> FindMembers(MemberProperties property, string value)
        {
            var message = string.Format(MessageConstants.Members_FindMembers, property, value);
            var doc = new XmlDocument();
            doc.LoadXml(ProcessAction(message));

            return doc.DocumentElement.ChildNodes.Cast<XmlNode>()
                    .First(q => "Results".Equals(q.Name))
                    .ChildNodes.Cast<XmlNode>()
                    .Select(q => MemberInfo.Create(q));
        }
Пример #4
0
 protected override System.Linq.Expressions.Expression VisitMemberAccess(System.Linq.Expressions.MemberExpression m)
 {
     if (m.Expression is System.Linq.Expressions.ParameterExpression)
     {
         string     text       = string.Empty;
         MemberInfo memberInfo = m.Member;
         if (memberInfo != null)
         {
             this._CurrentMemberInfo = memberInfo;
             this._CurrentMemberType = m.Type;
             Type         valueType = memberInfo.ReflectedType;
             DMSTableKeys key       = this.TableKeys.Where(q => q.AssemblyQualifiedName == valueType.AssemblyQualifiedName).LastOrDefault();
             if (key != null && (this.ExcuteType == DMSExcuteType.SELECT ||
                                 this.ExcuteType == DMSExcuteType.UPDATE_WHERE ||
                                 this.ExcuteType == DMSExcuteType.INSERT_SELECT))
             {
                 text = key.TableSpecialName;
                 if (this.SplitExpression.TableMapping.TokenFlag == true)
                 {
                     text = this.Provider.BuildColumnName(text);
                 }
                 this._strSql.Append(text);
                 this._strSql.Append(this.Provider.TableToken);
             }
             text = GetMemberInfoName(memberInfo.Name);
             if (this.SplitExpression.TableMapping.TokenFlag == true)
             {
                 text = this.Provider.BuildColumnName(text);
             }
             _strSql.Append(text);
         }
         return(m);
     }
     else if (m.Expression is System.Linq.Expressions.MemberExpression)
     {
         //q.UserName.Length
         string name = m.Member.Name;
         if (MemberProperties.ContainsKey(name))
         {
             this.MethodFunc(MemberProperties[name], m.Expression);
         }
         return(m);
     }
     return(base.VisitMemberAccess(m));
 }
Пример #5
0
 /// <summary>
 /// Retrieves a scalar member in this entity type, or creates it if not found
 /// </summary>
 /// <param name="name">Name of the member property.</param>
 /// <param name="type">Type of the new member property.</param>
 /// <param name="nullable">Nullable; true or false.</param>
 /// <param name="ordinal">Ordinal position within the entity type.</param>
 /// <returns>A ModelMemberProperty object.</returns>
 public ModelMemberProperty GetOrCreateMember(string name, Type type, bool nullable, int ordinal)
 {
     try
     {
         ModelMemberProperty modelMemberProperty = MemberProperties.FirstOrDefault(mp => mp.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase));
         if (modelMemberProperty == null)
         {
             modelMemberProperty = AddMember(name, type, nullable, ordinal);
         }
         return(modelMemberProperty);
     }
     catch (Exception ex)
     {
         try
         {
             ExceptionTools.AddExceptionData(ex, this);
         }
         catch { }
         throw;
     }
 }
        internal void FromPivotHierarchy(PivotHierarchy ph)
        {
            SetAllNull();

            if (ph.Outline != null)
            {
                Outline = ph.Outline.Value;
            }
            if (ph.MultipleItemSelectionAllowed != null)
            {
                Outline = ph.MultipleItemSelectionAllowed.Value;
            }
            if (ph.SubtotalTop != null)
            {
                SubtotalTop = ph.SubtotalTop.Value;
            }
            if (ph.ShowInFieldList != null)
            {
                ShowInFieldList = ph.ShowInFieldList.Value;
            }
            if (ph.DragToRow != null)
            {
                DragToRow = ph.DragToRow.Value;
            }
            if (ph.DragToColumn != null)
            {
                DragToColumn = ph.DragToColumn.Value;
            }
            if (ph.DragToPage != null)
            {
                DragToPage = ph.DragToPage.Value;
            }
            if (ph.DragToData != null)
            {
                DragToData = ph.DragToData.Value;
            }
            if (ph.DragOff != null)
            {
                DragOff = ph.DragOff.Value;
            }
            if (ph.IncludeNewItemsInFilter != null)
            {
                IncludeNewItemsInFilter = ph.IncludeNewItemsInFilter.Value;
            }
            if (ph.Caption != null)
            {
                Caption = ph.Caption.Value;
            }

            SLMemberProperty mp;
            SLMembers        mems;

            using (var oxr = OpenXmlReader.Create(ph))
            {
                while (oxr.Read())
                {
                    if (oxr.ElementType == typeof(MemberProperty))
                    {
                        mp = new SLMemberProperty();
                        mp.FromMemberProperty((MemberProperty)oxr.LoadCurrentElement());
                        MemberProperties.Add(mp);
                    }
                    else if (oxr.ElementType == typeof(Members))
                    {
                        mems = new SLMembers();
                        mems.FromMembers((Members)oxr.LoadCurrentElement());
                        Members.Add(mems);
                    }
                }
            }
        }