/********************************************************
* 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;
///
/// SQLite implementation of .
///
public sealed class SQLiteProviderFactory : DbProviderFactory, 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 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
}
}