public IEnumerable <T> ExecuteDeferredQuery <T>(TableMapping map) { if (_conn.Trace) { Debug.WriteLine("Executing Query: " + this); } IDbStatement stmt = Prepare(); try { var cols = new TableMapping.Column[_sqlitePlatform.SQLiteApi.ColumnCount(stmt)]; for (int i = 0; i < cols.Length; i++) { string name = _sqlitePlatform.SQLiteApi.ColumnName16(stmt, i); cols[i] = map.FindColumn(name); } while (_sqlitePlatform.SQLiteApi.Step(stmt) == Result.Row) { object obj = Activator.CreateInstance(map.MappedType); for (int i = 0; i < cols.Length; i++) { if (cols[i] == null) { continue; } ColType colType = _sqlitePlatform.SQLiteApi.ColumnType(stmt, i); object val = ReadCol(stmt, i, colType, cols[i].ColumnType); cols[i].SetValue(obj, val); } OnInstanceCreated(obj); yield return((T)obj); } } finally { _sqlitePlatform.SQLiteApi.Finalize(stmt); } }
public IEnumerable <T> ExecuteDeferredQuery <T>(TableMapping map) { _conn.TraceListener.WriteLine("Executing Query: {0}", this); var stmt = Prepare(); try { var cols = new TableMapping.Column[_sqlitePlatform.SQLiteApi.ColumnCount(stmt)]; for (var i = 0; i < cols.Length; i++) { var name = _sqlitePlatform.SQLiteApi.ColumnName16(stmt, i); cols[i] = map.FindColumn(name); } while (_sqlitePlatform.SQLiteApi.Step(stmt) == Result.Row) { var obj = _conn.Resolver.CreateObject(map.MappedType); for (var i = 0; i < cols.Length; i++) { if (cols[i] == null) { continue; } var colType = _sqlitePlatform.SQLiteApi.ColumnType(stmt, i); var val = ReadCol(stmt, i, colType, cols[i].ColumnType); cols[i].SetValue(obj, val); } OnInstanceCreated(obj); yield return((T)obj); } } finally { _sqlitePlatform.SQLiteApi.Finalize(stmt); } }