internal static IList Find(ConditionInfo condition) { IList results = ObjectPool.FindByQuery(condition); if (results != null) { return(results); } if ("*".Equals(condition.SelectedItem)) { condition.State.includeAll(); } else { condition.State.include(SqlBuilder.GetIncludeProperty(condition.SelectedItem)); } IList includeEntityPropertyList = condition.State.Includer.EntityPropertyList; IDbCommand cmd = DataFactory.GetCommand(condition.Sql, DbContext.getConnection(condition.State.EntityInfo)); foreach (String key in condition.Parameters.Keys) { DataFactory.SetParameter(cmd, key, condition.Parameters[key]); } Hashtable hashtable = new Hashtable(); IDataReader record = null; results = new ArrayList(); try { record = cmd.ExecuteReader(); while (record.Read()) { EntityPropertyUtil.Fill_EntityProperty_Ids(record, includeEntityPropertyList, ref hashtable); results.Add(FillUtil.Populate(record, condition.State)); } } catch (Exception ex) { logger.Error(ex.Message); logger.Error(ex.StackTrace); throw new OrmException(ex.Message, ex); } finally { OrmHelper.CloseDataReader(record); } if (results.Count == 0) { return(results); } return(EntityPropertyUtil.setEntityProperty(condition.State, results, hashtable)); }
internal static IList Find(ConditionInfo condition) { IList results = ObjectPool.FindByQuery(condition); if (results != null) { return(results); } if ("*".Equals(condition.SelectedItem)) { condition.State.includeAll(); } else { condition.State.include(SqlBuilder.GetIncludeProperty(condition.SelectedItem)); } IList includeEntityPropertyList = condition.State.Includer.EntityPropertyList; IDbCommand cmd = DataFactory.GetCommand(condition.Sql, DbContext.getConnection(condition.State.EntityInfo)); foreach (String key in condition.Parameters.Keys) { DataFactory.SetParameter(cmd, key, condition.Parameters[key]); } Hashtable hashtable = new Hashtable(); IDataReader record = null; results = new ArrayList(); try { record = cmd.ExecuteReader(); while (record.Read()) { EntityPropertyUtil.Fill_EntityProperty_Ids(record, includeEntityPropertyList, ref hashtable); results.Add(FillUtil.Populate(record, condition.State)); } } catch (Exception ex) { logger.Error(ex.Message); logger.Error(ex.StackTrace); throw ex; } finally { if (!DbContext.shouldTransaction()) { if (cmd.Connection.State != ConnectionState.Closed) { cmd.Connection.Close(); cmd.Connection.Dispose(); OrmHelper.clostCount++; LogManager.GetLogger("Class:System.ORM.Operation.FindByOperation Method:Find").Info("数据库连接已关闭【" + OrmHelper.clostCount + "】"); } } OrmHelper.CloseDataReader(record); } if (results.Count == 0) { return(results); } return(EntityPropertyUtil.setEntityProperty(condition.State, results, hashtable)); }