Exemplo n.º 1
0
        internal SqlMember Member(SqlExpression expr, MemberInfo member)
        {
            Type           clrType        = TypeSystem.GetMemberType(member);
            MetaType       metaType       = this.model.GetMetaType(member.DeclaringType);
            MetaDataMember metaDataMember = metaType.GetDataMember(member);

            if (metaType != null && metaDataMember != null)
            {
                return(new SqlMember(clrType, this.Default(metaDataMember), expr, member));
            }
            return(new SqlMember(clrType, this.Default(clrType), expr, member));
        }
Exemplo n.º 2
0
        private static bool GetKeyFromPredicate(MetaType type, Dictionary <MetaDataMember, object> keys, Expression mex, Expression vex)
        {
            MemberExpression memex = mex as MemberExpression;

            if (memex == null || memex.Expression == null ||
                memex.Expression.NodeType != ExpressionType.Parameter || memex.Expression.Type != type.Type)
            {
                return(false);
            }
            if (!type.Type.IsAssignableFrom(memex.Member.ReflectedType) && !memex.Member.ReflectedType.IsAssignableFrom(type.Type))
            {
                return(false);
            }
            MetaDataMember mm = type.GetDataMember(memex.Member);

            if (!mm.IsPrimaryKey)
            {
                return(false);
            }
            if (keys.ContainsKey(mm))
            {
                return(false);
            }
            ConstantExpression cex = vex as ConstantExpression;

            if (cex != null)
            {
                keys.Add(mm, cex.Value);
                return(true);
            }
            InvocationExpression ie = vex as InvocationExpression;

            if (ie != null && ie.Arguments != null && ie.Arguments.Count == 0)
            {
                ConstantExpression ce = ie.Expression as ConstantExpression;
                if (ce != null)
                {
                    keys.Add(mm, ((Delegate)ce.Value).DynamicInvoke(new object[] {}));
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 3
0
        private static bool GetKeyFromPredicate(MetaType type, Dictionary <MetaDataMember, object> keys, Expression mex, Expression vex)
        {
            var memberExpression = mex as MemberExpression;

            if (memberExpression == null || memberExpression.Expression == null || memberExpression.Expression.NodeType != ExpressionType.Parameter || memberExpression.Expression.Type != type.Type)
            {
                return(false);
            }
            if (!type.Type.IsAssignableFrom(memberExpression.Member.ReflectedType) && !memberExpression.Member.ReflectedType.IsAssignableFrom(type.Type))
            {
                return(false);
            }
            var dataMember = type.GetDataMember(memberExpression.Member);

            if (!dataMember.IsPrimaryKey)
            {
                return(false);
            }
            if (keys.ContainsKey(dataMember))
            {
                return(false);
            }
            var constantExpression = vex as ConstantExpression;

            if (constantExpression != null)
            {
                keys.Add(dataMember, constantExpression.Value);
                return(true);
            }
            var invocationExpression = vex as InvocationExpression;

            if (invocationExpression != null && invocationExpression.Arguments != null && invocationExpression.Arguments.Count == 0)
            {
                var constantExpression2 = invocationExpression.Expression as ConstantExpression;
                if (constantExpression2 != null)
                {
                    keys.Add(dataMember, ((Delegate)constantExpression2.Value).DynamicInvoke());
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 4
0
        private static MetaDataMember GetDataMember(MetaType dataType, MemberInfo member)
        {
            MetaDataMember dataMember;

            try
            {
                dataMember = dataType.GetDataMember(member);
            }
            catch (InvalidOperationException)
            {
                throw new UnmappedItemException("Cannot resolve member: " + member.DeclaringType.FullName + "." + member.Name + " is not a mapped member");
            }

            if (dataMember == null)
            {
                throw new UnmappedItemException("Cannot resolve member: " + member.DeclaringType.FullName + "." + member.Name + " is not a mapped member");
            }

            return(dataMember);
        }
Exemplo n.º 5
0
        private static bool GetKeyFromPredicate(MetaType type, IDictionary <MetaDataMember, object> keys, Expression mex, Expression vex)
        {
            var expression = mex as MemberExpression;

            if ((((expression != null) && (expression.Expression != null)) && ((expression.Expression.NodeType == ExpressionType.Parameter) && (expression.Expression.Type == type.Type))) && (type.Type.IsAssignableFrom(expression.Member.ReflectedType) || expression.Member.ReflectedType.IsAssignableFrom(type.Type)))
            {
                MetaDataMember dataMember = type.GetDataMember(expression.Member);
                if (!dataMember.IsPrimaryKey)
                {
                    return(false);
                }
                if (keys.ContainsKey(dataMember))
                {
                    return(false);
                }
                var expression2 = vex as ConstantExpression;
                if (expression2 != null)
                {
                    keys.Add(dataMember, expression2.Value);
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 6
0
 public override MetaDataMember GetDataMember(System.Reflection.MemberInfo member)
 {
     return(_orgtype.GetDataMember(member));
 }