public SoodaObjectManyToManyCollection(SoodaTransaction transaction, int masterColumn, object masterValue, Type relationType, Sooda.Schema.RelationInfo relationInfo) : base(transaction, masterColumn == 0 ? relationInfo.GetRef1ClassInfo() : relationInfo.GetRef2ClassInfo()) { this.relationInfo = relationInfo; this.masterValue = masterValue; this.masterColumn = masterColumn; this.relationType = relationType; _factory = transaction.GetFactory(classInfo); }
public override IDataReader LoadRefObjectList(SchemaInfo schema, RelationInfo relationInfo, int masterColumn, object masterValue, out TableInfo[] tables) { try { if (masterColumn == 0) tables = relationInfo.GetRef1ClassInfo().UnifiedTables[0].ArraySingleton; else tables = relationInfo.GetRef2ClassInfo().UnifiedTables[0].ArraySingleton; string query = GetLoadRefObjectSelectStatement(relationInfo, masterColumn); IDbCommand cmd = Connection.CreateCommand(); try { cmd.CommandTimeout = CommandTimeout; } catch (NotSupportedException e) { logger.Debug("CommandTimeout not supported. {0}", e.Message); } if (Transaction != null) cmd.Transaction = this.Transaction; SqlBuilder.BuildCommandWithParameters(cmd, false, query, new object[] { masterValue }, false); return TimedExecuteReader(cmd); } catch (Exception ex) { logger.Error("Exception in LoadRefObjectList: {0}", ex); throw; } }