using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.SQLite; using System.Linq; using System.Text; namespace TheAgileWorkshop.SQLiteWithSchemaSupport { public class SQLiteWithSchemaConnection : IDbConnection { private readonly SQLiteConnection connection; public SQLiteWithSchemaConnection() { connection = new SQLiteConnection(); } public SQLiteWithSchemaConnection(string connectionString) { connection = new SQLiteConnection(connectionString); } public SQLiteWithSchemaConnection(SQLiteConnection connection) { this.connection = connection; } public void Dispose() { connection.Dispose(); } public IDbTransaction BeginTransaction() { return new SQLiteWithSchemaTransaction(this, connection.BeginTransaction()); } public IDbTransaction BeginTransaction(IsolationLevel il) { return new SQLiteWithSchemaTransaction(this, connection.BeginTransaction(il)); } public void Close() { connection.Close(); } public void ChangeDatabase(string databaseName) { connection.ChangeDatabase(databaseName); } public IDbCommand CreateCommand() { return new SQLiteWithSchemaCommand(this); } public void Open() { connection.Open(); } public string ConnectionString { get { return connection.ConnectionString;} set { connection.ConnectionString = value; } } public int ConnectionTimeout { get { return connection.ConnectionTimeout; } } public string Database { get { return connection.Database; } } public ConnectionState State { get { return connection.State; } } internal SQLiteConnection InnerConnection { get { return connection; } } } }