public override IDbDataParameter AddParameter(IDbCommand command, DbParamInfo prmInfo) { var prm = (MySqlParameter)base.AddParameter(command, prmInfo); prm.MySqlDbType = (MySqlDbType)prmInfo.TypeInfo.VendorDbType.VendorDbType; return(prm); }
internal DbParamInfo GetParameters(List <DicParam> list) { // var paras = new DbParamInfo(); foreach (var db in list) { if (DC.IsParameter(db.Action)) { if (db.Group != null) { paras.Add(GetParameters(db.Group)); } else if (db.Inserts != null) { paras.Add(GetParameters(db.Inserts)); } else if (DC.IsInParameter(db)) { paras.Add(GetParameters(db.InItems)); } else { paras.Add(db.ParamInfo); } } } // return(paras); }
public override IDbDataParameter AddParameter(IDbCommand command, DbParamInfo prmInfo) { var prm = (SqlParameter)base.AddParameter(command, prmInfo); prm.SqlDbType = (SqlDbType)prmInfo.TypeInfo.VendorDbType.VendorDbType; //Set User type name switch (prm.SqlDbType) { case SqlDbType.Udt: prm.UdtTypeName = prmInfo.TypeInfo.SqlTypeSpec; break; case SqlDbType.Structured: prm.TypeName = prmInfo.TypeInfo.SqlTypeSpec; break; } return(prm); }
internal DbParamInfo GetParameters(List <DicParam> list) { var paras = new DbParamInfo(); // foreach (var db in list) { if (DC.IsParameter(db.Action)) { if (db.Group != null) { paras.Add(GetParameters(db.Group)); } else if (db.Inserts != null) { paras.Add(GetParameters(db.Inserts)); } else if (DC.IsInParameter(db)) { paras.Add(GetParameters(db.InItems)); } else { paras.Add(db.ParamInfo); } } } // if (XConfig.IsDebug && DC.Parameters.Count > 0 && list[0].ID == 1) { lock (XDebug.Lock) { XDebug.Dics = FlatDics(DC.Parameters); XDebug.SetValue(); } } // return(paras); }
public virtual IDbDataParameter AddParameter(IDbCommand command, DbParamInfo prmInfo) { var prm = command.CreateParameter(); var typeInfo = prmInfo.TypeInfo; prm.DbType = typeInfo.DbType; prm.Direction = prmInfo.Direction; prm.ParameterName = prmInfo.Name; if (typeInfo.Precision > 0) { prm.Precision = typeInfo.Precision; } if (typeInfo.Scale > 0) { prm.Scale = typeInfo.Scale; } if (typeInfo.Size > 0) { prm.Size = (int)typeInfo.Size; } prm.Value = prmInfo.DefaultValue; command.Parameters.Add(prm); return(prm); }
private bool BatchShouldUseParameterFor(DbParamInfo paramInfo, object value) { if (paramInfo.Direction != ParameterDirection.Input) { return(true); } if (value == DBNull.Value) { return(false); } var t = value.GetType(); if (t == typeof(string)) { var str = (string)value; return(str.Length > MaxLiteralLength); } if (t == typeof(byte[])) { var bytes = (byte[])value; return(bytes.Length > MaxLiteralLength); } return(false); }
//Creates default implementation for servers that do not support array parameters. // The command is implemented as templated SQL public virtual DbCommandInfo BuildSelectByKeyArrayCommand(EntityCommand entityCommand) { const string SqlSelectByFkTemplate = @" SELECT {0} {1} FROM {2} WHERE {3} {4}"; var table = DbModel.LookupDbObject <DbTableInfo>(entityCommand.TargetEntityInfo, throwNotFound: true); var dbKey = DbModel.LookupDbObject <DbKeyInfo>(entityCommand.SelectKey); if (dbKey.KeyColumns.Count > 1) { return(null); } var keyCol = dbKey.KeyColumns[0].Column.ColumnName; var cmdName = ModelConfig.NamingPolicy.GetDbCommandName(entityCommand, table.TableName, "SelectByArrayOf_", keyCol); var descrTag = GetDbCommandDescriptiveTag(entityCommand); var cmdInfo = new DbCommandInfo(entityCommand, cmdName, table, DbExecutionType.Reader, null, descrTag); cmdInfo.IsTemplatedSql = true; //Build column list var outColumns = table.Columns.GetSelectable(); var strColumns = outColumns.GetSqlNameList(); //build WHERE clause var whereExpr = '"' + keyCol + '"' + " IN ({0})"; //this {0} will remain in a template if (!string.IsNullOrWhiteSpace(entityCommand.Filter)) { whereExpr = whereExpr + " AND " + ProcessFilter(entityCommand, table); } string orderByExpr = null; if (dbKey.KeyType == KeyType.PrimaryKey) { orderByExpr = null; } else { orderByExpr = BuildOrderBy(table, table.DefaultOrderBy); } string strTop = string.Empty; var sql = string.Format(SqlSelectByFkTemplate, strTop, strColumns, table.FullName, whereExpr, orderByExpr); sql = sql.Trim() + ";"; cmdInfo.Sql = sql; cmdInfo.EntityMaterializer = CreateEntityMaterializer(table, outColumns); //Create parameter for just-in-time formatting of SQL var entPrm = entityCommand.Parameters[0]; Type elemType; Util.Check(entPrm.DataType.IsListOfDbPrimitive(out elemType), "Parameter is not list of primitives."); var elemTypeInfo = GetDbTypeInfo(elemType, 0); Util.Check(elemTypeInfo != null, "Failed to get db type information for type {0}.", elemType); var prm = new DbParamInfo(entPrm, "(array)", 0); prm.ToLiteralConverter = (list) => ConvertList(list, elemTypeInfo); cmdInfo.Parameters.Add(prm); return(cmdInfo); }