public IDbDataParameter[] GetParameters(DbManager db, object obj) { IDbDataParameter[] parameters = new IDbDataParameter[_parameters.Count]; for (int i = 0; i < _parameters.Count; i++) { SqlQueryParameterInfo info = _parameters[i]; //parameters[i] = db.Parameter(info.ParameterName, info.MemberMapper.GetValue(obj)); MapMemberInfo mmi = info.MemberMapper.MapMemberInfo; object val = info.MemberMapper.GetValue(obj); if (val == null && mmi.Nullable && mmi.NullValue == null) { //replace value with DbNull val = DBNull.Value; } if (mmi.IsDbTypeSet) { parameters[i] = mmi.IsDbSizeSet ? db.Parameter(info.ParameterName, val, info.MemberMapper.DbType, mmi.DbSize) : db.Parameter(info.ParameterName, val, info.MemberMapper.DbType); } else { parameters[i] = db.Parameter(info.ParameterName, val); } } return(parameters); }
protected SqlQueryInfo CreateInsertSqlText(DbManager db, Type type, int nParameter) { TypeExtension typeExt = TypeExtension.GetTypeExtension(type, Extensions); ObjectMapper om = db.MappingSchema.GetObjectMapper(type); List <MemberMapper> list = new List <MemberMapper>(); StringBuilder sb = new StringBuilder(); SqlQueryInfo query = new SqlQueryInfo(om); MetadataProviderBase mp = MappingSchema.MetadataProvider; sb.Append("INSERT INTO "); AppendTableName(sb, db, type); sb.Append(" (\n"); foreach (MemberMapper mm in GetFieldList(om)) { // IT: This works incorrectly for complex mappers. // // [2009-03-24] ili: use mm.MemberAccessor instead of mm.ComplexMemberAccessor // as in CreateUpdateSqlText // bool isSet; if (mp.GetNonUpdatableAttribute(type, typeExt, mm.MapMemberInfo.MemberAccessor, out isSet) == null || !isSet) { sb.AppendFormat("\t{0},\n", db.DataProvider.Convert(mm.Name, ConvertType.NameToQueryField)); list.Add(mm); } } sb.Remove(sb.Length - 2, 1); sb.Append(") VALUES (\n"); foreach (MemberMapper mm in list) { SqlQueryParameterInfo p = query.AddParameter( db.DataProvider.Convert(mm.Name + "_P", ConvertType.NameToQueryParameter).ToString(), mm.Name); if (nParameter < 0) { sb.AppendFormat("\t{0},\n", p.ParameterName); } //sb.AppendFormat("\t{0},\n", db.DataProvider.Convert(p.ParameterName, ConvertType.NameToQueryParameter)); else { sb.AppendFormat("\t{{{0}}},\n", nParameter++); } } sb.Remove(sb.Length - 2, 1); sb.Append(")"); query.QueryText = sb.ToString(); return(query); }
private void AddWherePK(DbManager db, SqlQueryInfo query, StringBuilder sb, int nParameter, FullObjectMapper mapper) { sb.Append("WHERE\n"); foreach (IMapper mm in mapper.PropertiesMapping) { if (mm is ValueMapper && mm.DataReaderIndex == mapper.DataReaderIndex) { var valueMapper = (ValueMapper)mm; string tableAlias = mapper.PropertyType.Name; //mm.Name = ID_TRACK SqlQueryParameterInfo p = query.AddParameter( db.DataProvider.Convert(valueMapper.ColumnName + "_W", ConvertType.NameToQueryParameter). ToString(), valueMapper.ColumnName); sb.AppendFormat("\t{0}.{1} = ", "T" /* tableAlias */, db.DataProvider.Convert(p.FieldName, ConvertType.NameToQueryField)); if (nParameter < 0) { sb.AppendFormat("{0} AND\n", p.ParameterName); } else { sb.AppendFormat("{{{0}}} AND\n", nParameter++); } } } sb.Remove(sb.Length - 5, 5); }
protected virtual void AddWherePK(DbManager db, SqlQueryInfo query, StringBuilder sb, int nParameter) { sb.Append("WHERE\n"); MemberMapper[] memberMappers = GetKeyFieldList(db, query.ObjectType); if (memberMappers.Length == 0) { throw new DataAccessException( string.Format("No primary key field(s) in the type '{0}'.", query.ObjectType.FullName)); } foreach (MemberMapper mm in memberMappers) { SqlQueryParameterInfo p = query.AddParameter( db.DataProvider.Convert(mm.Name + "_W", ConvertType.NameToQueryParameter).ToString(), mm.Name); sb.AppendFormat("\t{0} = ", db.DataProvider.Convert(p.FieldName, ConvertType.NameToQueryField)); if (nParameter < 0) { sb.AppendFormat("{0} AND\n", p.ParameterName); } else { sb.AppendFormat("{{{0}}} AND\n", nParameter); } } sb.Remove(sb.Length - 5, 5); }
protected SqlQueryInfo CreateUpdateSqlText(DbManager db, Type type) { TypeExtension typeExt = TypeExtension.GetTypeExtension(type, Extensions); ObjectMapper om = db.MappingSchema.GetObjectMapper(type); StringBuilder sb = new StringBuilder(); SqlQueryInfo query = new SqlQueryInfo(om); MetadataProviderBase mp = MappingSchema.MetadataProvider; sb.AppendFormat("UPDATE\n\t{0}\nSET\n", db.DataProvider.Convert(GetTableName(type), ConvertType.NameToQueryTable)); foreach (MemberMapper mm in GetFieldList(om)) { bool isSet; if (!mp.GetNonUpdatableFlag(type, typeExt, mm.MemberAccessor, out isSet) || !isSet) { SqlQueryParameterInfo p = query.AddParameter( db.DataProvider.Convert(mm.Name, ConvertType.NameToQueryParameter).ToString(), mm.Name); sb.AppendFormat("\t{0} = {1},\n", db.DataProvider.Convert(p.FieldName, ConvertType.NameToQueryField), p.ParameterName); } } sb.Remove(sb.Length - 2, 1); AddWherePK(db, query, sb); query.QueryText = sb.ToString(); return(query); }
public SqlQueryParameterInfo AddParameter(string parameterName, string fieldName) { var parameter = new SqlQueryParameterInfo { ParameterName = parameterName, FieldName = fieldName }; parameter.SetMemberMapper(ObjectMapper); _parameters.Add(parameter); return parameter; }
//NOTE Changed to virtual public virtual SqlQueryParameterInfo AddParameter(string parameterName, string fieldName) { var parameter = new SqlQueryParameterInfo { ParameterName = parameterName, FieldName = fieldName }; parameter.SetMemberMapper(ObjectMapper); Parameters.Add(parameter); return(parameter); }
public SqlQueryParameterInfo AddParameter(string parameterName, string fieldName) { SqlQueryParameterInfo parameter = new SqlQueryParameterInfo(); parameter.ParameterName = parameterName; parameter.FieldName = fieldName; parameter.SetMemberMapper(_objectMapper); _parameters.Add(parameter); return(parameter); }
public IDbDataParameter[] GetParameters(DbManager db, object obj) { IDbDataParameter[] parameters = new IDbDataParameter[_parameters.Count]; for (int i = 0; i < _parameters.Count; i++) { SqlQueryParameterInfo info = (SqlQueryParameterInfo)_parameters[i]; parameters[i] = db.Parameter(info.ParameterName, info.MemberMapper.GetValue(obj)); } return(parameters); }
protected SqlQueryInfo CreateInsertSqlText(DbManager db, Type type) { TypeExtension typeExt = TypeExtension.GetTypeExtension(type, Extensions); ObjectMapper om = db.MappingSchema.GetObjectMapper(type); List <MemberMapper> list = new List <MemberMapper>(); StringBuilder sb = new StringBuilder(); SqlQueryInfo query = new SqlQueryInfo(om); MetadataProviderBase mp = MappingSchema.MetadataProvider; sb.AppendFormat("INSERT INTO {0} (\n", db.DataProvider.Convert(GetTableName(type), ConvertType.NameToQueryTable)); foreach (MemberMapper mm in GetFieldList(om)) { // IT: This works incorrectly for complex mappers. // bool isSet; if (!mp.GetNonUpdatableFlag(type, typeExt, mm.ComplexMemberAccessor, out isSet) || !isSet) { sb.AppendFormat("\t{0},\n", db.DataProvider.Convert(mm.Name, ConvertType.NameToQueryField)); list.Add(mm); } } sb.Remove(sb.Length - 2, 1); sb.Append(") VALUES (\n"); foreach (MemberMapper mm in list) { SqlQueryParameterInfo p = query.AddParameter( db.DataProvider.Convert(mm.Name, ConvertType.NameToQueryParameter).ToString(), mm.Name); sb.AppendFormat("\t{0},\n", p.ParameterName); } sb.Remove(sb.Length - 2, 1); sb.Append(")"); query.QueryText = sb.ToString(); return(query); }
public IDbDataParameter[] GetParameters(DbManager db, object[] key) { if (_parameters.Count != key.Length) { throw new DataAccessException("Parameter list does match key list."); } IDbDataParameter[] parameters = new IDbDataParameter[_parameters.Count]; for (int i = 0; i < _parameters.Count; i++) { SqlQueryParameterInfo info = _parameters[i]; parameters[i] = db.Parameter(info.ParameterName, key[i]); } return(parameters); }
protected SqlQueryInfo CreateUpdateSqlText(DbManager db, Type type, int nParameter) { TypeExtension typeExt = TypeExtension.GetTypeExtension(type, Extensions); ObjectMapper om = db.MappingSchema.GetObjectMapper(type); StringBuilder sb = new StringBuilder(); SqlQueryInfo query = new SqlQueryInfo(om); MetadataProviderBase mp = MappingSchema.MetadataProvider; sb.Append("UPDATE\n\t"); AppendTableName(sb, db, type); sb.Append("\nSET\n"); MemberMapper[] fields = GetFieldList(om); bool hasFields = false; foreach (MemberMapper mm in fields) { bool isSet; if (mp.GetNonUpdatableAttribute(type, typeExt, mm.MapMemberInfo.MemberAccessor, out isSet) != null && isSet) { continue; } mp.GetPrimaryKeyOrder(type, typeExt, mm.MapMemberInfo.MemberAccessor, out isSet); if (isSet) { continue; } hasFields = true; SqlQueryParameterInfo p = query.AddParameter( db.DataProvider.Convert(mm.Name + "_P", ConvertType.NameToQueryParameter).ToString(), mm.Name); sb.AppendFormat("\t{0} = ", db.DataProvider.Convert(p.FieldName, ConvertType.NameToQueryField)); if (nParameter < 0) { sb.AppendFormat("{0},\n", p.ParameterName); } else { sb.AppendFormat("\t{{{0}}},\n", nParameter++); } } if (!hasFields) { throw new DataAccessException( string.Format("There are no fields to update in the type '{0}'.", query.ObjectType.FullName)); } sb.Remove(sb.Length - 2, 1); AddWherePK(db, query, sb, nParameter); query.QueryText = sb.ToString(); return(query); }