public void ContainsAdd(ref List <SqlBuildParameter> obj, SqlBuildParameter build, bool isGenericList = false) { try { var r = obj.Where(w => w.TableNameAs == build.TableNameAs).ToList(); if (r == null || r.Count() == 0) { obj.Add(build); } else { if (isGenericList) { obj.Add(build); } else { SqlBuildParameter upds = r.ToList()[0]; int sourceIndex = obj.IndexOf(upds); //加至末尾 upds.ColumnBuilds.AddRange(build.ColumnBuilds); obj[sourceIndex] = upds; } } } catch (Exception err) { Trace.WriteLine(err.ToString()); } }
public virtual void SetBuildParameter(ref List <SqlBuildParameter> buildParmes, object ojbValue, ColumnInfo columnInfo) { SqlBuildParameter classbuildparameter = SqlBuildParameter.Create(columnInfo.TableNameAs); List <ColumnBuild> classBuilList = new List <ColumnBuild>() { ColumnBuild.Create(columnInfo.ColumnName, columnInfo.Value, columnInfo.ColumnType, columnInfo.DBType) }; classbuildparameter.ColumnBuilds = classBuilList; ContainsAdd(ref buildParmes, classbuildparameter, columnInfo.IsGenric); }
public void BasePropertySetValue(ref List <SqlBuildParameter> buildParmes, object obj, SQLBuildAttribute buildAttribute, PropertyInfo property, bool isList = false) { Type bindType = MatchAttrProperty(buildAttribute.ColumnTypeAs, property); string AddColName = string.IsNullOrEmpty(buildAttribute.ColumnAs) ? property.Name : buildAttribute.ColumnAs; object AddValue = property.GetValue(obj, null); SqlBuildParameter classbuildparameter = SqlBuildParameter.Create(buildAttribute.TableAs); List <ColumnBuild> classBuilList = new List <ColumnBuild>() { ColumnBuild.Create(AddColName, AddValue, bindType, buildAttribute) }; classbuildparameter.ColumnBuilds = classBuilList; SqlBuildSuppot.ContainsAdd(ref buildParmes, classbuildparameter, isList); }
public List <SqlBuildParameter> GenericConvert <T>(T obj) where T : class, IList { List <SqlBuildParameter> builds = new List <SqlBuildParameter>(); if (obj == null) { return(builds); } IEntityMapper mapper = new StandardMapper(); BuildColumn buildColumn = new BuildColumn(); IList objArray = obj as IList; foreach (var item in objArray) { TableInfo tableInfo = mapper.GetTableInfo(item.GetType()); SqlBuildParameter param = SqlBuildParameter.Create(tableInfo.Value); List <ColumnBuild> colPrams = new List <ColumnBuild>(); //解析类的属性字段 PropertyInfo[] properties = mapper.GetAllProperty(item.GetType()); foreach (var property in properties) { ColumnInfo colinfo = mapper.GetColumnInfo(item, property); if (colinfo == null || colinfo.IsNull) { continue; } if (colinfo.IsBaseType) { buildColumn.SetProperty(property); colPrams.Add(new ColumnBuild { ColumnName = colinfo.TableNameAs, ColType = colinfo.ColumnType, Value = colinfo.Value, DbType = colinfo.DBType }); } } param.ColumnBuilds = colPrams; builds.Add(param); } return(builds); }