public void InitConfig(QueryConfig config)
        {
            _queryConfig = config;

            if (config == null) return;

            var type = config.TypeQueryMappings.Keys.FirstOrDefault(x => this.GetType().IsSubclassOf(x));
            if (type == null) type = this.GetType();

            if (config != null && type != null && config.TypeQueryMappings.ContainsKey(type))
            {
                _queries = config.TypeQueryMappings[type];

                _selectString = _queries.SelectQuery;
                ThrowIfDeleteDetected(_selectString);

                _deleteString = _queries.DeleteQuery;

                _updateString = _queries.UpdateQuery;
                ThrowIfDeleteDetected(_updateString);

                _insertString = _queries.InsertQuery;
                ThrowIfDeleteDetected(_insertString);
            }
        }
 public void SetPropertiesFaster(TypeQueries queryInfo, Dictionary<string, object> dict)
 {
     var ptype = GetType();
     foreach (var i in queryInfo.SelectQueryFields)
     {
         var pinfo = ptype.GetProperty(i.Property);
         if (pinfo != null)
         {
             switch (i.Type)
             {
                 case SelectQueryFieldStore.DataTypes.Int:
                     pinfo.SetValue(this, Convert.ToInt32(dict[i.Column]), null);
                     break;
                 case SelectQueryFieldStore.DataTypes.Bool:
                     pinfo.SetValue(this, Convert.ToBoolean(dict[i.Column]), null);
                     break;
                 case SelectQueryFieldStore.DataTypes.Float:
                     pinfo.SetValue(this, (float)Convert.ToDouble(dict[i.Column]), null);
                     break;
                 case SelectQueryFieldStore.DataTypes.Long:
                     pinfo.SetValue(this, Convert.ToInt64(dict[i.Column]), null);
                     break;
                 case SelectQueryFieldStore.DataTypes.Short:
                     pinfo.SetValue(this, Convert.ToInt16(dict[i.Column]), null);
                     break;
                 case SelectQueryFieldStore.DataTypes.String:
                 default:
                     pinfo.SetValue(this, Convert.ToString(dict[i.Column]), null);
                     break;
             }
         }
     }
 }
Example #3
0
        public static TypeQueries Create(XElement element)
        {
            if (element.Name != _XMLTagName && element.Name != _XMLTagNameExt) return null;

            TypeQueries tq;
            if (element.Name == XMLTagName) tq = new TypeQueries();
            else
            {
                tq = new TypeQueriesExtension();
                var name = element.Attribute("name");
                if (name != null) (tq as TypeQueriesExtension).Name = name.Value;
            }

            var insert = element.Element(_XMLInsertTag);
            //if (insert == null) throw new Exception( String.Format("Undefined insert query - missing '{0}' tag",_XMLInsertTag) );
            if( insert != null )
            {
                var sql = insert.Element(_XMLSQLTag);
                if (sql == null) throw new Exception(String.Format("Undefined query string - missing '{0}' tag", _XMLSQLTag));
                tq.InsertQuery = sql.Value;

                var list = new List<string>();
                foreach (var param in insert.Elements(_XMLParamTag))
                {
                    //tq._insertParameters.Add(param.Value);
                    list.Add(param.Value);
                }
                tq._insertArgs = list.ToArray();
            }

            var delete = element.Element(_XMLDeleteTag);
            //if (delete == null) throw new Exception(String.Format("Undefined delete query - missing '{0}' tag", _XMLDeleteTag));
            if( delete != null )
            {
                var sql = delete.Element(_XMLSQLTag);
                if (sql == null) throw new Exception(String.Format("Undefined query string - missing '{0}' tag", _XMLSQLTag));
                tq.DeleteQuery = sql.Value;

                var list = new List<string>();
                foreach (var param in delete.Elements(_XMLParamTag))
                {
                    list.Add(param.Value);
                    //tq._deleteParameters.Add(param.Value);
                }

                tq._deleteArgs = list.ToArray();
            }

            var update = element.Element(_XMLUpdateTag);
            //if (update == null) throw new Exception(String.Format("Undefined update query - missing '{0}' tag", _XMLUpdateTag));
            if( update != null )
            {
                var sql = update.Element(_XMLSQLTag);
                if (sql == null) throw new Exception(String.Format("Undefined query string - missing '{0}' tag", _XMLSQLTag));
                tq.UpdateQuery = sql.Value;

                var list = new List<string>();
                foreach (var param in update.Elements(_XMLParamTag))
                {
                    //tq._updateParameters.Add(param.Value);
                    list.Add(param.Value);
                }
                tq._updateArgs = list.ToArray();
            }

            var select = element.Element(_XMLSelectTag);
            if (select != null)
            {
                var sql = select.Element(_XMLSQLTag);
                if (sql == null) throw new Exception(String.Format("Undefined query string - missing '{0}' tag", _XMLSQLTag));
                tq.SelectQuery = sql.Value;

                var list = new List<string>();
                foreach (var param in select.Elements(_XMLParamTag))
                {
                    //tq._selectParameters.Add(param.Value);
                    list.Add(param.Value);
                }
                tq._selectArgs = list.ToArray();

                foreach (var store in select.Elements(_XMLStoreTag))
                {
                    var field = store.Attribute(_XMLStoreFieldAttr);
                    if (field == null) continue;

                    var type = store.Attribute(_XMLStoreTypeAttr);
                    if (type == null) continue;

                    var property = store.Value;
                    if (property == null) continue;

                    SelectQueryFieldStore.DataTypes etype;
                    switch(type.Value)
                    {
                        case "int": etype = SelectQueryFieldStore.DataTypes.Int;
                            break;
                        case "float": etype = SelectQueryFieldStore.DataTypes.Float;
                            break;
                        case "string": etype = SelectQueryFieldStore.DataTypes.String;
                            break;
                        case "bool": etype = SelectQueryFieldStore.DataTypes.Bool;
                            break;
                        case "long": etype = SelectQueryFieldStore.DataTypes.Long;
                            break;
                        case "short": etype = SelectQueryFieldStore.DataTypes.Short;
                            break;
                        default:
                            etype = SelectQueryFieldStore.DataTypes.String;
                            break;
                    }

                    tq._selectQueryFields.Add(new SelectQueryFieldStore(field.Value, property, etype));
                }
            }

            return tq;
        }