/// <summary>
        /// 考虑匿名函数构造函数参数和其只读属性的对应
        /// </summary>
        /// <param name="memberInfo"></param>
        /// <returns></returns>
        public DbExpression GetMemberExpression(MemberInfo memberInfo)
        {
            memberInfo = memberInfo.AsReflectedMemberOf(this.ConstructorDescriptor.ConstructorInfo.DeclaringType);
            DbExpression ret = null;

            if (!this.SelectedMembers.TryGetValue(memberInfo, out ret))
            {
                ParameterInfo p = null;
                if (!this.ConstructorDescriptor.MemberParameterMap.TryGetValue(memberInfo, out p))
                {
                    return(null);
                }

                if (!this.ConstructorParameters.TryGetValue(p, out ret))
                {
                    return(null);
                }
            }

            return(ret);
        }
        /// <summary>
        /// 考虑匿名函数构造函数参数和其只读属性的对应
        /// </summary>
        /// <param name="memberInfo"></param>
        /// <returns></returns>
        public DbExpression GetPrimitiveMember(MemberInfo memberInfo)
        {
            memberInfo = memberInfo.AsReflectedMemberOf(this.ObjectType);
            DbExpression ret = null;

            if (!this.PrimitiveMembers.TryGetValue(memberInfo, out ret))
            {
                ParameterInfo p = null;
                if (!this.ConstructorDescriptor.MemberParameterMap.TryGetValue(memberInfo, out p))
                {
                    return(null);
                }

                if (!this.PrimitiveConstructorParameters.TryGetValue(p, out ret))
                {
                    return(null);
                }
            }

            return(ret);
        }
        public IMappingObjectExpression GetComplexMemberExpression(MemberInfo memberInfo)
        {
            memberInfo = memberInfo.AsReflectedMemberOf(this.ConstructorDescriptor.ConstructorInfo.DeclaringType);
            IMappingObjectExpression ret = null;

            if (!this.ComplexMembers.TryGetValue(memberInfo, out ret))
            {
                //从构造函数中查
                ParameterInfo p = null;
                if (!this.ConstructorDescriptor.MemberParameterMap.TryGetValue(memberInfo, out p))
                {
                    return(null);
                }

                if (!this.ComplexConstructorParameters.TryGetValue(p, out ret))
                {
                    return(null);
                }
            }

            return(ret);
        }
        public ComplexObjectModel GetComplexMember(MemberInfo memberInfo)
        {
            memberInfo = memberInfo.AsReflectedMemberOf(this.ObjectType);
            ComplexObjectModel ret = null;

            if (!this.ComplexMembers.TryGetValue(memberInfo, out ret))
            {
                //从构造函数中查
                ParameterInfo p = null;
                if (!this.ConstructorDescriptor.MemberParameterMap.TryGetValue(memberInfo, out p))
                {
                    return(null);
                }

                if (!this.ComplexConstructorParameters.TryGetValue(p, out ret))
                {
                    return(null);
                }
            }

            return(ret as ComplexObjectModel);
        }
 public void AddComplexMemberExpression(MemberInfo memberInfo, IMappingObjectExpression moe)
 {
     memberInfo = memberInfo.AsReflectedMemberOf(this.ConstructorDescriptor.ConstructorInfo.DeclaringType);
     this.ComplexMembers.Add(memberInfo, moe);
 }
 public void AddMappingMemberExpression(MemberInfo memberInfo, DbExpression exp)
 {
     memberInfo = memberInfo.AsReflectedMemberOf(this.ConstructorDescriptor.ConstructorInfo.DeclaringType);
     this.MappingMembers.Add(memberInfo, exp);
 }
 public void AddNavMemberExpression(MemberInfo memberInfo, IMappingObjectExpression moe)
 {
     memberInfo = memberInfo.AsReflectedMemberOf(this.ConstructorDescriptor.ConstructorInfo.DeclaringType);
     this.SubResultEntities.Add(memberInfo, moe);
 }
 public void AddCollectionMember(MemberInfo memberInfo, CollectionObjectModel model)
 {
     memberInfo = memberInfo.AsReflectedMemberOf(this.ObjectType);
     this.CollectionMembers.Add(memberInfo, model);
 }
 public void AddPrimitiveMember(MemberInfo memberInfo, DbExpression exp)
 {
     memberInfo = memberInfo.AsReflectedMemberOf(this.ObjectType);
     this.PrimitiveMembers.Add(memberInfo, exp);
 }