static void EntityType_BeforeDel(Xy.Data.Procedure procedure, Xy.Data.DataBase DB) { short inID = Convert.ToInt16(procedure.GetItem("ID")); EntityType _type = GetInstance(inID); System.Data.DataTable _childTypies = GetChildType(inID); foreach (System.Data.DataRow _childTypeRow in _childTypies.Rows) { EntityType _childType = new EntityType(); _childType.Fill(_childTypeRow); Del(_childType.ID); } StringBuilder _dropTableProcedure = new StringBuilder(); foreach (System.Data.DataRow _multiAttrsRow in EntityAttribute.GetByTypeID(inID).Rows) { EntityAttribute _attr = new EntityAttribute(); _attr.Fill(_multiAttrsRow); if (_attr.IsMultiple) { _dropTableProcedure.AppendLine(string.Format(_commandPartern_Del, "Entity_" + _type.Key + "_" + _attr.Key)); } } _dropTableProcedure.AppendLine(string.Format(_commandPartern_Del, "Entity_" + _type.Key)); Xy.Data.Procedure _deleteRelativeTable = new Xy.Data.Procedure("DeleteRelativeTable", _dropTableProcedure.ToString()); Xy.Data.Procedure _deleteRelativeEntityBase = new Xy.Data.Procedure("DeleteRelativeEntityBase", "Delete from [EntityBase] where [TypeID] = @ID", new Xy.Data.ProcedureParameter[] { new Xy.Data.ProcedureParameter("ID", System.Data.DbType.Int64) }); _deleteRelativeEntityBase.SetItem("ID", inID); _deleteRelativeTable.InvokeProcedure(DB); _deleteRelativeEntityBase.InvokeProcedure(DB); }
public long Add(System.Collections.Specialized.NameValueCollection inValues) { bool _isActive = false; if (inValues["IsActive"] != null && Convert.ToBoolean(inValues["IsActive"])) _isActive = true; StringBuilder _command = new StringBuilder(); StringBuilder _field, _value, _commandFormMultiplyAttribute; bool _hasSimpleField; foreach (string _table in _cache.RelatedTables) { _hasSimpleField = false; _commandFormMultiplyAttribute = new StringBuilder(); _field = new StringBuilder(); _field.Append("[EntityID]"); _value = new StringBuilder(); _value.Append("@EntityID"); foreach (EntityAttribute _attr in _cache.Attributes) { if (_attr.ID == -1) continue; if (string.Compare(_attr.Table, _table) == 0) { string _tempValue = inValues[_attr.Key]; if (string.IsNullOrEmpty(_tempValue)) { if (!string.IsNullOrEmpty(_attr.Default)) { _tempValue = _attr.Default; } else if (!_attr.IsNull) { throw new Exception(string.Format("can not put Null on the field '{0}'", _attr.Key)); } else { continue; } } if (_attr.IsMultiple) { foreach (string mulAttrValue in inValues[_attr.Key].Split(_attr.Split[0])) { _commandFormMultiplyAttribute.AppendLine(string.Format("Insert [{0}]([EntityID],[{1}])values(@EntityID,'{2}')", _attr.Table, _attr.Key, mulAttrValue)); } } else { _hasSimpleField = true; _field.AppendFormat(",[{0}]", _attr.Key); _value.AppendFormat(",'{0}'", _tempValue); } } } if (_hasSimpleField) { _command.AppendLine(string.Format("Insert into [{0}](", _table)); _command.AppendLine(_field.ToString()); _command.AppendLine(")values("); _command.AppendLine(_value.ToString()); _command.AppendLine(")"); } _command.Append(_commandFormMultiplyAttribute.ToString()); } if (_command.Length > 0) { Xy.Data.Procedure _procedure = new Xy.Data.Procedure("AddEntity" + _cache.TypeInstance.Key, _command.ToString()); _procedure.AddItem("EntityID", System.Data.DbType.Int64); _db.Open(); _db.StartTransaction(); try { long _entityID = EntityBase.Add(_cache.TypeInstance.ID, _isActive, _db); _procedure.SetItem("EntityID", _entityID); _procedure.InvokeProcedure(_db); _db.CommitTransaction(); return _entityID; } catch { _db.RollbackTransation(); throw; } finally { _db.Close(); } } return 0; }
public EntityCollection GetList(string where, int pageIndex,int pageSize, string order, ref int totalRowCount) { Xy.Data.Procedure _getList = new Xy.Data.Procedure("Entity_SplitPage", new Xy.Data.ProcedureParameter[] { new Xy.Data.ProcedureParameter("Select", System.Data.DbType.String), new Xy.Data.ProcedureParameter("TableName", System.Data.DbType.String), new Xy.Data.ProcedureParameter("Where", System.Data.DbType.String), new Xy.Data.ProcedureParameter("PageIndex", System.Data.DbType.Int32), new Xy.Data.ProcedureParameter("PageSize", System.Data.DbType.Int32), new Xy.Data.ProcedureParameter("Order", System.Data.DbType.String), new Xy.Data.ProcedureParameter("OrderBy", System.Data.DbType.String), new Xy.Data.ProcedureParameter("TotalRowCount", System.Data.DbType.Int32){ Direction = System.Data.ParameterDirection.InputOutput} }); _getList.SetItem("Select", _cache.CacheString_Select_Field); _getList.SetItem("TableName", _cache.CacheString_Select_Table); _getList.SetItem("Where", "[TypeID] = " + _cache.TypeInstance.ID + (string.IsNullOrEmpty(where) ? string.Empty : " and " + where)); _getList.SetItem("PageIndex", pageIndex); _getList.SetItem("PageSize", pageSize); _getList.SetItem("Order", "[EntityBase].[ID] desc"); _getList.SetItem("OrderBy", string.IsNullOrEmpty(order) ? "[ID] desc" : order); _getList.SetItem("TotalRowCount", totalRowCount); System.Data.DataTable _dt = _getList.InvokeProcedureFill(); totalRowCount = Convert.ToInt32(_getList.GetItem("TotalRowCount")); EntityCollection _ec = new EntityCollection(_dt, _cache.TypeInstance.ID); return _ec; }