using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.Linq.Expressions; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Globalization; using System.Data.Common; using System.Data.Linq; using System.Data.Linq.Provider; namespace System.Data.Linq.SqlClient { internal interface IObjectReader : IEnumerator, IDisposable { IObjectReaderSession Session { get; } } internal interface IObjectReaderSession : IConnectionUser, IDisposable { bool IsBuffered { get; } void Buffer(); } internal interface IReaderProvider : IProvider { IDataServices Services { get; } IConnectionManager ConnectionManager { get; } } internal interface IObjectReaderFactory { IObjectReader Create(DbDataReader reader, bool disposeReader, IReaderProvider provider, object[] parentArgs, object[] userArgs, ICompiledSubQuery[] subQueries); IObjectReader GetNextResult(IObjectReaderSession session, bool disposeReader); } internal interface IObjectReaderCompiler { IObjectReaderFactory Compile(SqlExpression expression, Type elementType); IObjectReaderSession CreateSession(DbDataReader reader, IReaderProvider provider, object[] parentArgs, object[] userArgs, ICompiledSubQuery[] subQueries); } internal interface ICompiledSubQuery { IExecuteResult Execute(IProvider provider, object[] parentArgs, object[] userArgs); } }