/******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Robert Simpson (robert@blackcastlesoft.com) * * Released to the public domain, use at your own risk! ********************************************************/ #if USE_ENTITY_FRAMEWORK_6 namespace System.Data.SQLite.EF6 #else namespace System.Data.SQLite.Linq #endif { using System; using System.Data.Common; using System.Globalization; #if USE_ENTITY_FRAMEWORK_6 using System.Data.Entity.Core.Common; #endif /// /// SQLite implementation of . /// public sealed class SQLiteProviderFactory : DbProviderFactory, IServiceProvider, IDisposable { #region Public Static Data /// /// Static instance member which returns an instanced /// class. /// public static readonly SQLiteProviderFactory Instance = new SQLiteProviderFactory(); #endregion /////////////////////////////////////////////////////////////////////// #region Public Constructors /// /// Constructs a new instance. /// public SQLiteProviderFactory() { // do nothing. } #endregion /////////////////////////////////////////////////////////////////////// #region System.Data.Common.DbProviderFactory Overrides /// /// Creates and returns a new object. /// /// The new object. public override DbCommand CreateCommand() { CheckDisposed(); return new SQLiteCommand(); } /////////////////////////////////////////////////////////////////////// /// /// Creates and returns a new object. /// /// The new object. public override DbCommandBuilder CreateCommandBuilder() { CheckDisposed(); return new SQLiteCommandBuilder(); } /////////////////////////////////////////////////////////////////////// /// /// Creates and returns a new object. /// /// The new object. public override DbConnection CreateConnection() { CheckDisposed(); return new SQLiteConnection(); } /////////////////////////////////////////////////////////////////////// /// /// Creates and returns a new /// object. /// /// The new object. public override DbConnectionStringBuilder CreateConnectionStringBuilder() { CheckDisposed(); return new SQLiteConnectionStringBuilder(); } /////////////////////////////////////////////////////////////////////// /// /// Creates and returns a new object. /// /// The new object. public override DbDataAdapter CreateDataAdapter() { CheckDisposed(); return new SQLiteDataAdapter(); } /////////////////////////////////////////////////////////////////////// /// /// Creates and returns a new object. /// /// The new object. public override DbParameter CreateParameter() { CheckDisposed(); return new SQLiteParameter(); } #endregion /////////////////////////////////////////////////////////////////////// #region IServiceProvider Members /// /// Gets the service object of the specified type. /// /// /// An object that specifies the type of service object to get. /// /// /// A service object of type serviceType -OR- a null reference if /// there is no service object of type serviceType. /// public object GetService( Type serviceType ) { if ((serviceType == typeof(ISQLiteSchemaExtensions)) || (serviceType == typeof(DbProviderServices))) { SQLiteLog.LogMessage(HelperMethods.StringFormat( CultureInfo.CurrentCulture, "IServiceProvider.GetService for type \"{0}\" (success).", serviceType)); return SQLiteProviderServices.Instance; } SQLiteLog.LogMessage(HelperMethods.StringFormat( CultureInfo.CurrentCulture, "IServiceProvider.GetService for type \"{0}\" (failure).", serviceType)); return null; } #endregion /////////////////////////////////////////////////////////////////////// #region IDisposable Members public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } #endregion /////////////////////////////////////////////////////////////////////// #region IDisposable "Pattern" Members private bool disposed; private void CheckDisposed() /* throw */ { #if THROW_ON_DISPOSED if (disposed) { throw new ObjectDisposedException( typeof(SQLiteProviderFactory).Name); } #endif } /////////////////////////////////////////////////////////////////////// private void Dispose(bool disposing) { if (!disposed) { //if (disposing) //{ // //////////////////////////////////// // // dispose managed resources here... // //////////////////////////////////// //} ////////////////////////////////////// // release unmanaged resources here... ////////////////////////////////////// disposed = true; } } #endregion /////////////////////////////////////////////////////////////////////// #region Destructor ~SQLiteProviderFactory() { Dispose(false); } #endregion } }