示例#1
0
        protected override Expression VisitCollection(CollectionExpression collection)
        {
            var newAlias = new Alias();

            _map[collection.Alias] = newAlias;
            return(new CollectionExpression(newAlias, collection.Database, collection.CollectionName, collection.DocumentType));
        }
        public Expression VisitCollection([NotNull] CollectionExpression collectionExpression)
        {
            Check.NotNull(collectionExpression, nameof(collectionExpression));

            _bsonCommandBuilder.AddCollection(collectionExpression.Name, collectionExpression.EntityType);

            return(collectionExpression);
        }
示例#3
0
        public void AddCollection(string col, string alias)
        {
            var expr = new CollectionExpression {
                Source = col, Target = alias
            };

            expr.SetParent(this);
            _collections.Add(expr);
        }
示例#4
0
        public void AddCollection(string col)
        {
            var expr = new CollectionExpression {
                Source = col
            };

            expr.SetParent(this);
            _collections.Add(expr);
        }
        protected virtual void VisitCollectionExpression(StringBuilder builder, CollectionExpression exp)
        {
            if (exp == null)
            {
                return;
            }

            StringBuilder sb = new StringBuilder();

            sb.Append(string.Join(", ",
                                  Enumerable.ToArray(EnumerableToParameterConverter(exp.Collection))));

            if (sb.Length > 0)
            {
                builder.AppendFormat("({0})", sb);
            }
        }
        public Expression VisitCollection(CollectionExpression collectionExpression)
        {
            _bsonCommandBuilder.AddCollection(collectionExpression.Name, collectionExpression.EntityType);

            return(collectionExpression);
        }
 public AttributesCollectionExpression(CollectionExpression <PropertyNameExpression> attributesCollectionExpression)
     : base("AttributesCollection", attributesCollectionExpression)
 {
 }
示例#8
0
 protected override QueryExpression VisitCollection(TContext context, CollectionExpression expression)
 {
     return(expression);
 }
示例#9
0
 protected override Expression VisitCollection(CollectionExpression collection)
 {
     _aliases.Add(collection.Alias);
     return(collection);
 }
示例#10
0
 public void AddCollection(string col, string alias)
 {
     var expr = new CollectionExpression { Source = col, Target = alias };
     expr.SetParent(this);
     _collections.Add(expr);
 }
示例#11
0
 public void AddCollection(string col)
 {
     var expr = new CollectionExpression { Source = col };
     expr.SetParent(this);
     _collections.Add(expr);
 }
示例#12
0
        protected override Expression VisitCollection(QueryTranslatorContext context, CollectionExpression expression)
        {
            var properties = new Queue <PropertyInfo>(expression.Properties);
            var accessor   = Expression.MakeMemberAccess(context.Parameter, properties.Dequeue());

            while (properties.Count > 0)
            {
                accessor = Expression.MakeMemberAccess(accessor, properties.Dequeue());
            }
            return(accessor);
        }
示例#13
0
 public OrderByCollectionExpression(CollectionExpression <OrderByExpression> orderByCollectionExpression)
     : base("OrderByCollection", orderByCollectionExpression)
 {
 }
 protected abstract void VisitCollection(TContext context, CollectionExpression expression);
 object IQueryExpressionVisitor <TContext, object> .VisitCollection(TContext context, CollectionExpression expression)
 {
     VisitCollection(context, expression);
     return(null);
 }
示例#16
0
        protected override DataTable BuildSchemaTable(Boolean withGeometryColumn)
        {
            DataTable dt = null;

            using (NpgsqlConnection conn = new NpgsqlConnection(ConnectionString))
            {
                conn.Open();

                CollectionExpression <PropertyNameExpression> attributes = null;
                if (DefaultProviderProperties != null)
                {
                    attributes = GetProviderPropertyValue
                                 <AttributesCollectionExpression, CollectionExpression <PropertyNameExpression> >(
                        DefaultProviderProperties.ProviderProperties,
                        null);
                }

                string columns = attributes == null
                                     ?
                                 "*"
                                     :
                                 string.Join(",", Enumerable.ToArray(Processor.Select(attributes,
                                                                                      delegate(
                                                                                          PropertyNameExpression
                                                                                          o)
                {
                    return
                    (QualifyColumnName
                     (
                         o.
                         PropertyName));
                })));

                if (columns != "*")
                {
                    if (!columns.Contains(QualifyColumnName(GeometryColumn)))
                    {
                        columns = string.Format("{0},{1}", QualifyColumnName(GeometryColumn), columns);
                    }
                    if (!columns.Contains(QualifyColumnName(OidColumn)))
                    {
                        columns = string.Format("{0},{1}", QualifyColumnName(OidColumn), columns);
                    }
                }

                using (
                    NpgsqlCommand cmd =
                        new NpgsqlCommand(string.Format("SELECT {0} FROM {1} LIMIT 1;", columns, QualifiedTableName),
                                          conn))
                {
                    NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
                    DataSet           ds = new DataSet();
                    da.FillSchema(ds, SchemaType.Source);
                    dt = ds.Tables["Table"];
                }

                conn.Close();
            }

            if (!dt.Columns.Contains("oid") && HasOids)
            {
                dt.Columns.Add(new DataColumn("oid", typeof(Int64)));
                DataColumn dc = dt.Columns["oid"];
                dc.SetOrdinal(0);
                if (dt.Constraints.Count == 0)
                {
                    dt.Constraints.Add("PK", dt.Columns[0], true);
                }
            }

            for (int i = 0; i < dt.Columns.Count; i++)
            {
                if (dt.Columns[i].ColumnName == GeometryColumn)
                {
                    dt.Columns[i].DataType = typeof(Byte[]);
                }
            }

            if (!withGeometryColumn)
            {
                dt.Columns.Remove(GeometryColumn);
            }

            //remove Primary Key to avoid possibliy mismatched PrimaryKey of FeatureDataTable
            dt.PrimaryKey = null;
            return(dt);
        }