public override string BuildQueryString()
        {
            ObjectFields   = Symbol.GetType().GetProperties().Where(o => !AvoidFields.Contains(o.Name) && !o.PropertyType.IsSubclassOf(typeof(ElectronTransferModel.Geo.Geometry))).Select(o => o.Name).ToList();
            GeometryFields = new string[] { "SDO_X1", "SDO_Y1", "SDO_X2", "SDO_Y2", "SDO_X3", "SDO_Y3", "SDO_X4", "SDO_Y4", "SDO_ORIENTATION", "SDO_SEQ", "SDO_ESEQ", "SDO_ETYPE", "GDO_ATTRIBUTES" };
            var tableName = Mapping.GetUpdateView(this.Type.Name);

            //Fields.AddRange(new string[] { "SDO_X1", "SDO_Y1", "SDO_X2", "SDO_Y2", "SDO_X3", "SDO_Y3", "SDO_X4", "SDO_Y4", "SDO_ORIENTATION" });
            string sql = string.Format("INSERT INTO {0} ({1}) VALUES ({2})", tableName,
                                       string.Join(",", AllFields.ToArray()),
                                       string.Join(",", AllFields.Select(o => ":" + o).ToArray())
                                       );

            return(sql);

            /*
             * List<Point> points = new List<Point>();
             * if (Symbol.G3E_GEOMETRY is Point)
             * {
             *  Point point = Symbol.G3E_GEOMETRY as Point;
             *  points.Add(point);
             * }
             * else if (Symbol.G3E_GEOMETRY is Multipoint)
             * {
             *  Multipoint multipoint = Symbol.G3E_GEOMETRY as Multipoint;
             *  //points.Add(multipoint.Points);
             * }
             * else if (Symbol.G3E_GEOMETRY is LineString)
             * {
             *  LineString lineString = Symbol.G3E_GEOMETRY as LineString;
             *  points.AddRange(lineString.Points);
             * }
             * else if (Symbol.G3E_GEOMETRY is Polygon)
             * {
             *  Polygon polygon = Symbol.G3E_GEOMETRY as Polygon;
             *  points.AddRange(polygon.Lines.First().Points);
             * }
             *
             * int step = 4;
             *
             * for (int page = 0; page < (points.Count + step/2)/4; page++)
             * {
             *  var items = points.Skip(page*step).Take(step);
             *  for (int i = 0; i < items.Count(); i++)
             *  {
             *      string viewName = Mapping.GetUpdateView(Symbol.GetType().Name);
             *
             *      //string sql = string.Format("INSERT INTO {0} ({1}) VALUES {2}",viewName);
             *  }
             * }
             */
            //string sql;
        }
        public override string BuildQueryString()
        {
            GeometryFields = new string[] { "G3E_GEOMETRY" };
            ObjectFields   = Symbol.GetPropertyNames().Where(o => !AvoidFields.Contains(o) && !GeometryFields.Contains(o)).ToList();

            var tableName = Mapping.GetTableName(this.Type.Name);

            //Fields.AddRange(new string[] { "SDO_X1", "SDO_Y1", "SDO_X2", "SDO_Y2", "SDO_X3", "SDO_Y3", "SDO_X4", "SDO_Y4", "SDO_ORIENTATION" });
            string sql = string.Format("INSERT INTO {0} ({1}) VALUES ({2})", tableName,
                                       string.Join(",", AllFields.ToArray()),
                                       string.Join(",", AllFields.Select(o => ":" + o).ToArray())
                                       );

            return(sql);
        }
Пример #3
0
        public override string BuildQueryString()
        {
            GeometryFields = new string[] { "G3E_GEOMETRY" };
            ObjectFields   = Symbol.GetPropertyNames().Where(o => !AvoidFields.Contains(o) && o != "G3E_FID" && !GeometryFields.Contains(o)).ToList();

            var tableName = Mapping.GetTableName(this.Type.Name);
            Expression <Func <ElectronSymbol, bool> > conditionExpression = o => o.G3E_FID == Symbol.G3E_FID;
            var conditionVisitor = new ConditionVisitor(conditionExpression);
            //Fields.AddRange(new string[] { "SDO_X1", "SDO_Y1", "SDO_X2", "SDO_Y2", "SDO_X3", "SDO_Y3", "SDO_X4", "SDO_Y4", "SDO_ORIENTATION" });
            string sql = string.Format("UPDATE {0} SET {1} WHERE {2}", tableName,
                                       string.Join(",", AllFields.Select(o => string.Format("{0}=:{0}", o)).ToArray()),
                                       conditionVisitor
                                       );

            return(sql);
        }
Пример #4
0
        public override string BuildQueryString()
        {
            var properties = _entity.GetType().IsAnonymous() ? _entity.GetType().GetProperties() : this.Type.GetProperties().Where(o => !AvoidFields.Contains(o.Name));
            var keyFields  = KeyFieldCache.Instance.FindKeyFields(this.Type);

            this.Fields = properties.Where(o => !keyFields.Contains(o)).Concat(keyFields).Select(o => o.Name).ToList();

            //to do
            var hasGeometry = properties.Any(o => o.Name == this.GeometryQuery.GeometryField);

            if (hasGeometry)
            {
                //    for (int i = 0; i < parameterStrings.Length; i++)
                //    {
                //        if (parameterStrings[i] == "?G3E_GEOMETRY")
                //        {
                //            parameterStrings[i] = "GeomFromText(?G3E_GEOMETRY)";
                //        }
                //    }
            }
            //var conditionVisitor = new ConditionVisitor(this.Expr);
            //key field must be not update field

            //foreach (var propertyInfo in keyFields)
            //{
            //    this.Fields.Add(propertyInfo.Name);
            //}
            var condition = string.Join(" AND ", keyFields.Select(o => string.Format("{0}={1}{0}", o.Name, Seperator)).ToArray());

            return(string.Format("UPDATE {0} SET {1} WHERE {2} ", _byView? Mapping.GetUpdateView(Type.Name):Mapping.GetTableName(this.Type.Name),
                                 string.Join(",", properties.Where(o => !keyFields.Contains(o)).Select(o => string.Format("{0}={1}{0}", o.Name, Seperator)).ToArray()),
                                 condition));
        }
Пример #5
0
        public override string BuildQueryString()
        {
            var properties = _entity.GetType().IsAnonymous() ? _entity.GetType().GetProperties() : this.Type.GetProperties().Where(o => !AvoidFields.Contains(o.Name));

            Fields = properties.Select(o => o.Name).ToList();


            var hasGeometry      = properties.Any(o => o.Name == this.GeometryQuery.GeometryField);
            var parameterStrings = Fields.Select(o => Seperator + o).ToArray();

            return(string.Format("INSERT INTO {0} ({1}) VALUES ({2})", _byView? Mapping.GetUpdateView(Type.Name):Mapping.GetTableName(Type.Name),
                                 string.Join(",", properties.Select(o => o.Name).ToArray()),
                                 string.Join(",", parameterStrings)));
        }