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; } } } }
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; }