public string GetBindFields(object _obj, ORMWork.DataBaseOpTypes _DataBaseOpTypes) { string result; try { StringBuilder stringBuilder = new StringBuilder(); if (_obj == null) { throw new Exception("GetBindFields:实体对象为空!"); } for (int i = 0; i < _obj.GetType().GetProperties().Length; i++) { PropertyInfo propertyInfo = _obj.GetType().GetProperties()[i]; if (propertyInfo.GetCustomAttributes(true) == null || propertyInfo.GetCustomAttributes(true)[0] == null) { throw new Exception("GetBindFields:实体对象中属性没有映射到表中的列!"); } BindFieldAttribute bindFieldAttribute = propertyInfo.GetCustomAttributes(true)[0] as BindFieldAttribute; if (!(bindFieldAttribute.Name.Trim() == string.Empty)) { if (_DataBaseOpTypes != ORMWork.DataBaseOpTypes.Insert || (!(bindFieldAttribute.DefaultValue.ToUpper() == "SYS_GUID()") && !(bindFieldAttribute.DefaultValue.ToUpper() == "SYSDATE") && !(bindFieldAttribute.DefaultValue.ToLower() == "newid()") && !(bindFieldAttribute.DefaultValue.ToLower() == "getdate()"))) { if (ORMWork.DataBaseOpTypes.Update != _DataBaseOpTypes || (!bool.Parse(bindFieldAttribute.Key.ToString()) && !(bindFieldAttribute.Name.ToUpper() == "ID") && !(bindFieldAttribute.Name.ToUpper() == "INPUTEMPID") && !(bindFieldAttribute.Name.ToUpper() == "INPUTTIME"))) { if (ORMWork.DataBaseOpTypes.Delete != _DataBaseOpTypes) { if (stringBuilder.Length > 0) { stringBuilder.Append(","); } stringBuilder.Append(bindFieldAttribute.Name.Trim()); } } } } } result = stringBuilder.ToString(); } catch (Exception ex) { throw ex; } return(result); }
public DbParameter[] CreateParameters(object _obj, ORMWork.DataBaseOpTypes _DataBaseOpTypes, out string _fieldpars, out string _where) { DbParameter[] result; try { _fieldpars = ""; _where = ""; string text = ""; List <DbParameter> list = new List <DbParameter>(); if (_obj == null) { throw new Exception("CreateParameters:实体对象为空"); } list.Clear(); for (int i = 0; i < _obj.GetType().GetProperties().Length; i++) { BindFieldAttribute anBindFieldAttributeByFieldName = this.GetAnBindFieldAttributeByFieldName(_obj, _obj.GetType().GetProperties()[i].Name); if (_DataBaseOpTypes != ORMWork.DataBaseOpTypes.Insert || (!(anBindFieldAttributeByFieldName.DefaultValue.ToUpper() == "SYS_GUID()") && !(anBindFieldAttributeByFieldName.DefaultValue.ToUpper() == "SYSDATE") && !(anBindFieldAttributeByFieldName.DefaultValue.ToLower() == "newid()") && !(anBindFieldAttributeByFieldName.DefaultValue.ToLower() == "getdate()"))) { if (_DataBaseOpTypes != ORMWork.DataBaseOpTypes.Insert || (!(anBindFieldAttributeByFieldName.DefaultValue.ToUpper() == "SYS_GUID()") && !(anBindFieldAttributeByFieldName.DefaultValue.ToUpper() == "SYSDATE") && !(anBindFieldAttributeByFieldName.DefaultValue.ToLower() == "newid()") && !(anBindFieldAttributeByFieldName.DefaultValue.ToLower() == "getdate()"))) { if (ORMWork.DataBaseOpTypes.Update == _DataBaseOpTypes && (bool.Parse(anBindFieldAttributeByFieldName.Key.ToString()) || anBindFieldAttributeByFieldName.Name.ToUpper() == "ID")) { if (text.Trim() != "") { text += " AND "; } text = anBindFieldAttributeByFieldName.Name + "=@" + anBindFieldAttributeByFieldName.Name; list.Add(this.CreateAnParameter(anBindFieldAttributeByFieldName)); } else { if (ORMWork.DataBaseOpTypes.Delete == _DataBaseOpTypes && (bool.Parse(anBindFieldAttributeByFieldName.Key.ToString()) || anBindFieldAttributeByFieldName.Name.ToUpper() == "ID")) { if (text.Trim() != "") { text += " AND "; } text = anBindFieldAttributeByFieldName.Name + "=@" + anBindFieldAttributeByFieldName.Name; list.Add(this.CreateAnParameter(anBindFieldAttributeByFieldName)); break; } if (_fieldpars.Trim() != "") { _fieldpars += ","; } _fieldpars = _fieldpars + "@" + anBindFieldAttributeByFieldName.Name; list.Add(this.CreateAnParameter(anBindFieldAttributeByFieldName)); } } } } if (text != "") { text = " WHERE " + text; } _where = text; result = list.ToArray <DbParameter>(); } catch (Exception ex) { throw ex; } return(result); }