public static void Write(CharStream sqlStream, valueType value, ConstantConverter converter, string columnName) { #if NOJIT if (fields != null) { string[] columnNames = update.GetColumnNames(columnName); object[] sqlColumnParameters = null, castParameters = null, parameters = null; object objectValue = value; int index = 0; foreach (sqlModel.updateField field in fields) { if (index != 0) { sqlStream.WriteNotNull(" and "); } field.Set(sqlStream, objectValue, converter, columnNames[index++], ref sqlColumnParameters, ref castParameters, ref parameters); } } #else if (writer != null) { writer(sqlStream, value, converter, Updater.GetColumnNames(columnName)); } #endif else if (custom != null) { custom.Where(sqlStream, value, converter, columnName); } }
public static void Write(CharStream sqlStream, modelType value, ConstantConverter converter) { #if NOJIT if (fields != null) { byte isAnd = 0; object[] sqlColumnParameters = null, castParameters = null, parameters = null; foreach (sqlModel.updateField field in fields) { if (isAnd == 0) { isAnd = 1; } else { sqlStream.WriteNotNull(" and "); } field.Set(sqlStream, value, converter, ref sqlColumnParameters, ref castParameters, ref parameters); } } #else if (writer != null) { writer(sqlStream, value, converter); } #endif }
public static void Insert(CharStream sqlStream, valueType value, ConstantConverter converter) { #if NOJIT if (fields != null) { object[] sqlColumnParameters = null, castParameters = null, parameters = null; object objectValue = value; byte isNext = 0; foreach (sqlModel.insertField field in fields) { if (isNext == 0) { isNext = 1; } else { sqlStream.Write(','); } AutoCSer.code.cSharp.sqlModel.fieldInfo fieldInfo = field.Field; if (fieldInfo.IsSqlColumn) { if (sqlColumnParameters == null) { sqlColumnParameters = new object[] { sqlStream, null, converter } } ; sqlColumnParameters[1] = fieldInfo.Field.GetValue(objectValue); field.SqlColumnMethod.Invoke(null, sqlColumnParameters); } else { object memberValue = fieldInfo.Field.GetValue(objectValue); if (fieldInfo.ToSqlCastMethod != null) { if (castParameters == null) { castParameters = new object[1]; } castParameters[0] = memberValue; memberValue = fieldInfo.ToSqlCastMethod.Invoke(null, castParameters); } if (parameters == null) { parameters = new object[] { sqlStream, null } } ; parameters[1] = memberValue; fieldInfo.ToSqlMethod.Invoke(converter, parameters); } } } #else if (inserter != null) { inserter(sqlStream, value, converter); } #endif else if (custom != null) { custom.Insert(sqlStream, value, converter); } }
private static void insert <valueType>(CharStream sqlStream, valueType value, ConstantConverter converter) { Column <valueType> .Inserter.Insert(sqlStream, value, converter); }
public static void Update(CharStream sqlStream, MemberMap memberMap, modelType value, ConstantConverter converter, Table table) { #if NOJIT if (fields != null) { byte isNext = 0; object[] sqlColumnParameters = null, castParameters = null, parameters = null; foreach (sqlModel.updateField field in fields) { if (memberMap.IsMember(field.Field.MemberMapIndex)) { if (isNext == 0) { isNext = 1; } else { sqlStream.Write(','); } //if (field.NowTimeField == null) field.Set(sqlStream, value, converter, ref sqlColumnParameters, ref castParameters, ref parameters); } } } #else if (updater != null) { updater(sqlStream, memberMap, value, converter, table); } #endif }
public static void Insert(CharStream sqlStream, MemberMap memberMap, modelType value, ConstantConverter converter, Table table) { #if NOJIT if (fields != null) { object[] sqlColumnParameters = null, castParameters = null, parameters = null; byte isNext = 0; foreach (InsertField field in fields) { if (memberMap.IsMember(field.Field.MemberMapIndex)) { if (isNext == 0) { isNext = 1; } else { sqlStream.Write(','); } Field fieldInfo = field.Field; if (fieldInfo.IsSqlColumn) { if (sqlColumnParameters == null) { sqlColumnParameters = new object[] { sqlStream, null, converter } } ; sqlColumnParameters[1] = fieldInfo.FieldInfo.GetValue(value); field.SqlColumnMethod.Invoke(null, sqlColumnParameters); } else if (fieldInfo.NowTimeField == null) { object memberValue = fieldInfo.FieldInfo.GetValue(value); if (fieldInfo.ToSqlCastMethod != null) { if (castParameters == null) { castParameters = new object[1]; } castParameters[0] = memberValue; memberValue = fieldInfo.ToSqlCastMethod.Invoke(null, castParameters); } if (parameters == null) { parameters = new object[] { sqlStream, null } } ; parameters[1] = memberValue; fieldInfo.ToSqlMethod.Invoke(converter, parameters); } else { if (parameters == null) { parameters = new object[] { sqlStream, null } } ; parameters[1] = fieldInfo.NowTimeField.GetValue(null); fieldInfo.ToSqlMethod.Invoke(converter, parameters); } } } } #else if (inserter != null) { inserter(sqlStream, memberMap, value, converter, table); } #endif }
/// <summary> /// 获取逗号分割的列名集合 /// </summary> /// <param name="sqlStream"></param> /// <param name="memberMap"></param> /// <param name="constantConverter"></param> public static void GetColumnNames(CharStream sqlStream, MemberMap memberMap, ConstantConverter constantConverter) { int isNext = 0; foreach (Field member in Fields) { if (memberMap.IsMember(member.MemberMapIndex) || member == Identity || member.DataMember.PrimaryKeyIndex != 0) { if (isNext == 0) { isNext = 1; } else { sqlStream.Write(','); } if (member.IsSqlColumn) { sqlStream.SimpleWrite(((Func <string, string>)AutoCSer.Sql.Metadata.GenericType.Get(member.FieldInfo.FieldType).InserterGetColumnNamesMethod)(member.FieldInfo.Name)); } else { constantConverter.ConvertNameToSqlStream(sqlStream, member.FieldInfo.Name); } } } }
/// <summary> /// 获取逗号分割的列名集合 /// </summary> /// <param name="sqlStream"></param> /// <param name="memberMap"></param> /// <param name="constantConverter"></param> public static void GetColumnNames(CharStream sqlStream, MemberMap memberMap, ConstantConverter constantConverter) { int isNext = 0; foreach (Field member in Fields) { if (memberMap.IsMember(member.MemberMapIndex) || member == Identity || member.DataMember.PrimaryKeyIndex != 0) { if (isNext == 0) { isNext = 1; } else { sqlStream.Write(','); } if (member.IsSqlColumn) { sqlStream.SimpleWriteNotNull(ColumnGroup.Inserter.GetColumnNames(member.FieldInfo.FieldType)(member.FieldInfo.Name)); } else { constantConverter.ConvertNameToSqlStream(sqlStream, member.FieldInfo.Name); } } } }
/// <summary> /// 获取以逗号分割的名称集合 /// </summary> /// <param name="sqlStream"></param> /// <param name="memberMap"></param> /// <param name="constantConverter"></param> internal static void GetNames(CharStream sqlStream, MemberMap <modelType> memberMap, ConstantConverter constantConverter) { int isNext = 0; foreach (Field field in Fields) { if (memberMap.IsMember(field.MemberMapIndex)) { if (isNext == 0) { isNext = 1; } else { sqlStream.Write(','); } if (field.IsSqlColumn) { sqlStream.SimpleWrite(field.GetSqlColumnName()); } else { constantConverter.ConvertNameToSqlStream(sqlStream, field.FieldInfo.Name); } } } }
private static void update <valueType>(CharStream sqlStream, valueType value, ConstantConverter converter, string columnName) { Column <valueType> .Updater.Update(sqlStream, value, converter, columnName); }