|
From: <pa...@us...> - 2011-03-27 05:31:30
|
Revision: 5551
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5551&view=rev
Author: patearl
Date: 2011-03-27 05:31:22 +0000 (Sun, 27 Mar 2011)
Log Message:
-----------
SQLite: Fixed default property registration and organized registration functions.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs
Modified: trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2011-03-27 05:23:58 UTC (rev 5550)
+++ trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2011-03-27 05:31:22 UTC (rev 5551)
@@ -23,59 +23,72 @@
/// </summary>
public SQLiteDialect()
{
- RegisterColumnType(DbType.Binary, "BLOB");
+ RegisterColumnTypes();
+ RegisterFunctions();
+ RegisterKeywords();
+ RegisterDefaultProperties();
+ }
+
+ protected virtual void RegisterColumnTypes()
+ {
+ RegisterColumnType(DbType.Binary, "BLOB");
RegisterColumnType(DbType.Byte, "TINYINT");
RegisterColumnType(DbType.Int16, "SMALLINT");
- RegisterColumnType(DbType.Int32, "INT");
- RegisterColumnType(DbType.Int64, "BIGINT");
- RegisterColumnType(DbType.SByte, "INTEGER");
- RegisterColumnType(DbType.UInt16, "INTEGER");
- RegisterColumnType(DbType.UInt32, "INTEGER");
- RegisterColumnType(DbType.UInt64, "INTEGER");
- RegisterColumnType(DbType.Currency, "NUMERIC");
- RegisterColumnType(DbType.Decimal, "NUMERIC");
- RegisterColumnType(DbType.Double, "DOUBLE");
- RegisterColumnType(DbType.Single, "DOUBLE");
- RegisterColumnType(DbType.VarNumeric, "NUMERIC");
- RegisterColumnType(DbType.AnsiString, "TEXT");
- RegisterColumnType(DbType.String, "TEXT");
- RegisterColumnType(DbType.AnsiStringFixedLength, "TEXT");
- RegisterColumnType(DbType.StringFixedLength, "TEXT");
+ RegisterColumnType(DbType.Int32, "INT");
+ RegisterColumnType(DbType.Int64, "BIGINT");
+ RegisterColumnType(DbType.SByte, "INTEGER");
+ RegisterColumnType(DbType.UInt16, "INTEGER");
+ RegisterColumnType(DbType.UInt32, "INTEGER");
+ RegisterColumnType(DbType.UInt64, "INTEGER");
+ RegisterColumnType(DbType.Currency, "NUMERIC");
+ RegisterColumnType(DbType.Decimal, "NUMERIC");
+ RegisterColumnType(DbType.Double, "DOUBLE");
+ RegisterColumnType(DbType.Single, "DOUBLE");
+ RegisterColumnType(DbType.VarNumeric, "NUMERIC");
+ RegisterColumnType(DbType.AnsiString, "TEXT");
+ RegisterColumnType(DbType.String, "TEXT");
+ RegisterColumnType(DbType.AnsiStringFixedLength, "TEXT");
+ RegisterColumnType(DbType.StringFixedLength, "TEXT");
- RegisterColumnType(DbType.Date, "DATE");
- RegisterColumnType(DbType.DateTime, "DATETIME");
- RegisterColumnType(DbType.Time, "TIME");
- RegisterColumnType(DbType.Boolean, "BOOL");
- RegisterColumnType(DbType.Guid, "UNIQUEIDENTIFIER");
+ RegisterColumnType(DbType.Date, "DATE");
+ RegisterColumnType(DbType.DateTime, "DATETIME");
+ RegisterColumnType(DbType.Time, "TIME");
+ RegisterColumnType(DbType.Boolean, "BOOL");
+ RegisterColumnType(DbType.Guid, "UNIQUEIDENTIFIER");
+ }
+ protected virtual void RegisterFunctions()
+ {
// Using strftime returns 0-padded strings. '07' <> 7, so it is better to convert to an integer.
- RegisterFunction("second", new SQLFunctionTemplate(NHibernateUtil.Int32, "cast(strftime('%S', ?1) as int)"));
+ RegisterFunction("second", new SQLFunctionTemplate(NHibernateUtil.Int32, "cast(strftime('%S', ?1) as int)"));
RegisterFunction("minute", new SQLFunctionTemplate(NHibernateUtil.Int32, "cast(strftime('%M', ?1) as int)"));
RegisterFunction("hour", new SQLFunctionTemplate(NHibernateUtil.Int32, "cast(strftime('%H', ?1) as int)"));
RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.Int32, "cast(strftime('%d', ?1) as int)"));
RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.Int32, "cast(strftime('%m', ?1) as int)"));
RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.Int32, "cast(strftime('%Y', ?1) as int)"));
- // Uses local time like MSSQL and PostgreSQL.
- RegisterFunction("current_timestamp", new SQLFunctionTemplate(NHibernateUtil.DateTime, "datetime(current_timestamp, 'localtime')"));
- // The System.Data.SQLite driver stores both Date and DateTime as 'YYYY-MM-DD HH:MM:SS'
- // The SQLite date() function returns YYYY-MM-DD, which unfortunately SQLite does not consider
- // as equal to 'YYYY-MM-DD 00:00:00'. Because of this, it is best to return the
- // 'YYYY-MM-DD 00:00:00' format for the date function.
- RegisterFunction("date", new SQLFunctionTemplate(NHibernateUtil.Date, "datetime(date(?1))"));
+ // Uses local time like MSSQL and PostgreSQL.
+ RegisterFunction("current_timestamp", new SQLFunctionTemplate(NHibernateUtil.DateTime, "datetime(current_timestamp, 'localtime')"));
+ // The System.Data.SQLite driver stores both Date and DateTime as 'YYYY-MM-DD HH:MM:SS'
+ // The SQLite date() function returns YYYY-MM-DD, which unfortunately SQLite does not consider
+ // as equal to 'YYYY-MM-DD 00:00:00'. Because of this, it is best to return the
+ // 'YYYY-MM-DD 00:00:00' format for the date function.
+ RegisterFunction("date", new SQLFunctionTemplate(NHibernateUtil.Date, "datetime(date(?1))"));
- RegisterFunction("substring", new StandardSQLFunction("substr", NHibernateUtil.String));
- RegisterFunction("left", new SQLFunctionTemplate(NHibernateUtil.String, "substr(?1,1,?2)"));
- RegisterFunction("trim", new AnsiTrimEmulationFunction());
+ RegisterFunction("substring", new StandardSQLFunction("substr", NHibernateUtil.String));
+ RegisterFunction("left", new SQLFunctionTemplate(NHibernateUtil.String, "substr(?1,1,?2)"));
+ RegisterFunction("trim", new AnsiTrimEmulationFunction());
- RegisterFunction("mod", new SQLFunctionTemplate(NHibernateUtil.Int32, "((?1) % (?2))"));
+ RegisterFunction("mod", new SQLFunctionTemplate(NHibernateUtil.Int32, "((?1) % (?2))"));
- RegisterFunction("iif", new SQLFunctionTemplate(null, "case when ?1 then ?2 else ?3 end"));
+ RegisterFunction("iif", new SQLFunctionTemplate(null, "case when ?1 then ?2 else ?3 end"));
- RegisterFunction("cast", new SQLiteCastFunction());
+ RegisterFunction("cast", new SQLiteCastFunction());
+ }
-
+ protected virtual void RegisterKeywords()
+ {
RegisterKeyword("int"); // Used in our function templates.
- }
+ }
protected virtual void RegisterDefaultProperties()
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|