Beispiel #1
0
 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);
 }
Beispiel #2
0
 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;
 }
Beispiel #3
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;
 }