using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.Linq; using System.Data.Common; using System.Linq.Expressions; using System.IO; using System.Linq; using System.Text; using System.Transactions; using System.Reflection; using System.Diagnostics.CodeAnalysis; namespace System.Data.Linq.Provider { /// /// A data provider implements this interface to hook into the LINQ to SQL framework. /// internal interface IProvider : IDisposable { /// /// Initializes the database provider with the data services object and connection. /// /// /// A connection string, connection object or transaction object /// used to seed the provider with database connection information. void Initialize(IDataServices dataServices, object connection); /// /// The text writer used by the provider to output information such as query and commands /// being executed. /// TextWriter Log { get; set; } /// /// The connection object used by the provider when executing queries and commands. /// DbConnection Connection { get; } /// /// The transaction object used by the provider when executing queries and commands. /// DbTransaction Transaction { get; set; } /// /// The command timeout setting to use for command execution. /// int CommandTimeout { get; set; } /// /// Clears the connection of any current activity. /// void ClearConnection(); /// /// Creates a new database instance (catalog or file) at the location specified by the connection /// using the metadata encoded within the entities or mapping file. /// void CreateDatabase(); /// /// Deletes the database instance at the location specified by the connection. /// void DeleteDatabase(); /// /// Returns true if the database specified by the connection object exists. /// /// bool DatabaseExists(); /// /// Executes the query specified as a LINQ expression tree. /// /// /// A result object from which you can obtain the return value and output parameters. IExecuteResult Execute(Expression query); /// /// Compiles the query specified as a LINQ expression tree. /// /// /// A compiled query instance. ICompiledQuery Compile(Expression query); /// /// Translates a DbDataReader into a sequence of objects (entity or projection) by mapping /// columns of the data reader to object members by name. /// /// The type of the resulting objects. /// /// IEnumerable Translate(Type elementType, DbDataReader reader); /// /// Translates an IDataReader containing multiple result sets into sequences of objects /// (entity or projection) by mapping columns of the data reader to object members by name. /// /// /// IMultipleResults Translate(DbDataReader reader); /// /// Returns the query text in the database server's native query language /// that would need to be executed to perform the specified query. /// /// The query /// string GetQueryText(Expression query); /// /// Return an IDbCommand object representing the translation of specified query. /// /// /// DbCommand GetCommand(Expression query); } /// /// A compiled query. /// internal interface ICompiledQuery { /// /// Executes the compiled query using the specified provider and a set of arguments. /// /// The provider that will execute the compiled query. /// Argument values to supply to the parameters of the compiled query, /// when the query is specified as a LambdaExpression. /// IExecuteResult Execute(IProvider provider, object[] arguments); } internal static class DataManipulation { /// /// The method signature used to encode an Insert command. /// The method will throw a NotImplementedException if called directly. /// /// /// /// /// /// [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")] [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "resultSelector", Justification = "Microsoft: The method is being used to represent a method signature")] public static TResult Insert(TEntity item, Func resultSelector) { throw new NotImplementedException(); } /// /// The method signature used to encode an Insert command. /// The method will throw a NotImplementedException if called directly. /// /// /// /// [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")] public static int Insert(TEntity item) { throw new NotImplementedException(); } /// /// The method signature used to encode an Update command. /// The method will throw a NotImplementedException if called directly. /// /// /// /// /// /// /// [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")] [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "check", Justification = "Microsoft: The method is being used to represent a method signature")] [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "resultSelector", Justification = "Microsoft: The method is being used to represent a method signature")] public static TResult Update(TEntity item, Func check, Func resultSelector) { throw new NotImplementedException(); } /// /// The method signature used to encode an Update command. /// The method will throw a NotImplementedException if called directly. /// /// /// /// /// /// [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")] [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "resultSelector", Justification = "Microsoft: The method is being used to represent a method signature")] public static TResult Update(TEntity item, Func resultSelector) { throw new NotImplementedException(); } /// /// The method signature used to encode an Update command. /// The method will throw a NotImplementedException if called directly. /// /// /// /// /// [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")] [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "check", Justification = "Microsoft: The method is being used to represent a method signature")] public static int Update(TEntity item, Func check) { throw new NotImplementedException(); } /// /// The method signature used to encode an Update command. /// The method will throw a NotImplementedException if called directly. /// /// /// /// [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")] public static int Update(TEntity item) { throw new NotImplementedException(); } /// /// The method signature used to encode a Delete command. /// The method will throw a NotImplementedException if called directly. /// /// /// /// /// [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")] [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "check", Justification = "Microsoft: The method is being used to represent a method signature")] public static int Delete(TEntity item, Func check) { throw new NotImplementedException(); } /// /// The method signature used to encode a Delete command. /// The method will throw a NotImplementedException if called directly. /// /// /// /// [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")] public static int Delete(TEntity item) { throw new NotImplementedException(); } } }