From: <fab...@us...> - 2011-03-23 16:16:25
|
Revision: 5510 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5510&view=rev Author: fabiomaulo Date: 2011-03-23 16:16:19 +0000 (Wed, 23 Mar 2011) Log Message: ----------- Minor refactoring (organized stuff in methods) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-03-23 15:41:09 UTC (rev 5509) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-03-23 16:16:19 UTC (rev 5510) @@ -43,34 +43,34 @@ { public MsSql2000Dialect() { - RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)"); - RegisterColumnType(DbType.AnsiStringFixedLength, 8000, "CHAR($l)"); - RegisterColumnType(DbType.AnsiString, "VARCHAR(255)"); - RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForLengthLimitedAnsiString, "VARCHAR($l)"); - RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForAnsiClob, "TEXT"); - RegisterColumnType(DbType.Binary, "VARBINARY(8000)"); - RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForLengthLimitedBinary, "VARBINARY($l)"); - RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForBlob, "IMAGE"); - RegisterColumnType(DbType.Boolean, "BIT"); - RegisterColumnType(DbType.Byte, "TINYINT"); - RegisterColumnType(DbType.Currency, "MONEY"); - RegisterColumnType(DbType.Date, "DATETIME"); - RegisterColumnType(DbType.DateTime, "DATETIME"); - RegisterColumnType(DbType.Decimal, "DECIMAL(19,5)"); - RegisterColumnType(DbType.Decimal, 19, "DECIMAL($p, $s)"); - RegisterColumnType(DbType.Double, "DOUBLE PRECISION"); //synonym for FLOAT(53) - RegisterColumnType(DbType.Guid, "UNIQUEIDENTIFIER"); - RegisterColumnType(DbType.Int16, "SMALLINT"); - RegisterColumnType(DbType.Int32, "INT"); - RegisterColumnType(DbType.Int64, "BIGINT"); - RegisterColumnType(DbType.Single, "REAL"); //synonym for FLOAT(24) - RegisterColumnType(DbType.StringFixedLength, "NCHAR(255)"); - RegisterColumnType(DbType.StringFixedLength, SqlClientDriver.MaxSizeForLengthLimitedString, "NCHAR($l)"); - RegisterColumnType(DbType.String, "NVARCHAR(255)"); - RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForLengthLimitedString, "NVARCHAR($l)"); - RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForClob, "NTEXT"); - RegisterColumnType(DbType.Time, "DATETIME"); + RegisterCharacterTypeMappings(); + RegisterNumericTypeMappings(); + RegisterDateTimeTypeMappings(); + RegisterLargeObjectTypeMappings(); + RegisterGuidTypeMapping(); + RegisterFunctions(); + + RegisterKeywords(); + + RegisterDefaultProperties(); + } + + protected virtual void RegisterDefaultProperties() + { + DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver"; + } + + protected virtual void RegisterKeywords() + { + RegisterKeyword("top"); + RegisterKeyword("integer"); + RegisterKeyword("int"); + RegisterKeyword("datetime"); + } + + protected virtual void RegisterFunctions() + { RegisterFunction("count", new CountBigQueryFunction()); RegisterFunction("abs", new StandardSQLFunction("abs")); @@ -116,8 +116,8 @@ RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(day, ?1)")); RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(month, ?1)")); RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(year, ?1)")); - RegisterFunction("date", new SQLFunctionTemplate(NHibernateUtil.Date, "dateadd(dd, 0, datediff(dd, 0, ?1))")); - RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")")); + RegisterFunction("date", new SQLFunctionTemplate(NHibernateUtil.Date, "dateadd(dd, 0, datediff(dd, 0, ?1))")); + RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")")); RegisterFunction("digits", new StandardSQLFunction("digits", NHibernateUtil.String)); RegisterFunction("chr", new StandardSQLFunction("chr", NHibernateUtil.Character)); RegisterFunction("upper", new StandardSQLFunction("upper")); @@ -130,15 +130,55 @@ RegisterFunction("trim", new AnsiTrimEmulationFunction()); RegisterFunction("iif", new SQLFunctionTemplate(null, "case when ?1 then ?2 else ?3 end")); RegisterFunction("replace", new StandardSafeSQLFunction("replace", NHibernateUtil.String, 3)); + } - RegisterKeyword("top"); - RegisterKeyword("integer"); - RegisterKeyword("int"); - RegisterKeyword("datetime"); + protected virtual void RegisterGuidTypeMapping() + { + RegisterColumnType(DbType.Guid, "UNIQUEIDENTIFIER"); + } - DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver"; + protected virtual void RegisterLargeObjectTypeMappings() + { + RegisterColumnType(DbType.Binary, "VARBINARY(8000)"); + RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForLengthLimitedBinary, "VARBINARY($l)"); + RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForBlob, "IMAGE"); } + protected virtual void RegisterDateTimeTypeMappings() + { + RegisterColumnType(DbType.Time, "DATETIME"); + } + + protected virtual void RegisterNumericTypeMappings() + { + RegisterColumnType(DbType.Boolean, "BIT"); + RegisterColumnType(DbType.Byte, "TINYINT"); + RegisterColumnType(DbType.Currency, "MONEY"); + RegisterColumnType(DbType.Date, "DATETIME"); + RegisterColumnType(DbType.DateTime, "DATETIME"); + RegisterColumnType(DbType.Decimal, "DECIMAL(19,5)"); + RegisterColumnType(DbType.Decimal, 19, "DECIMAL($p, $s)"); + RegisterColumnType(DbType.Double, "DOUBLE PRECISION"); //synonym for FLOAT(53) + RegisterColumnType(DbType.Int16, "SMALLINT"); + RegisterColumnType(DbType.Int32, "INT"); + RegisterColumnType(DbType.Int64, "BIGINT"); + RegisterColumnType(DbType.Single, "REAL"); //synonym for FLOAT(24) + } + + protected virtual void RegisterCharacterTypeMappings() + { + RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)"); + RegisterColumnType(DbType.AnsiStringFixedLength, 8000, "CHAR($l)"); + RegisterColumnType(DbType.AnsiString, "VARCHAR(255)"); + RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForLengthLimitedAnsiString, "VARCHAR($l)"); + RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForAnsiClob, "TEXT"); + RegisterColumnType(DbType.StringFixedLength, "NCHAR(255)"); + RegisterColumnType(DbType.StringFixedLength, SqlClientDriver.MaxSizeForLengthLimitedString, "NCHAR($l)"); + RegisterColumnType(DbType.String, "NVARCHAR(255)"); + RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForLengthLimitedString, "NVARCHAR($l)"); + RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForClob, "NTEXT"); + } + /// <summary></summary> public override string AddColumnString { Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2011-03-23 15:41:09 UTC (rev 5509) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2011-03-23 16:16:19 UTC (rev 5510) @@ -12,10 +12,15 @@ { public MsSql2005Dialect() { + RegisterColumnType(DbType.Xml, "XML"); + } + + protected override void RegisterCharacterTypeMappings() + { + base.RegisterCharacterTypeMappings(); RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForClob, "NVARCHAR(MAX)"); RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForAnsiClob, "VARCHAR(MAX)"); RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForBlob, "VARBINARY(MAX)"); - RegisterColumnType(DbType.Xml, "XML"); } /// <summary> Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs 2011-03-23 15:41:09 UTC (rev 5509) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs 2011-03-23 16:16:19 UTC (rev 5510) @@ -5,15 +5,25 @@ { public class MsSql2008Dialect : MsSql2005Dialect { - public MsSql2008Dialect() + protected override void RegisterDateTimeTypeMappings() { + base.RegisterDateTimeTypeMappings(); RegisterColumnType(DbType.DateTime2, "DATETIME2"); RegisterColumnType(DbType.DateTimeOffset, "DATETIMEOFFSET"); RegisterColumnType(DbType.Date, "DATE"); RegisterColumnType(DbType.Time, "TIME"); + } + protected override void RegisterFunctions() + { + base.RegisterFunctions(); RegisterFunction("current_timestamp", new NoArgSQLFunction("sysdatetime", NHibernateUtil.DateTime2, true)); RegisterFunction("current_timestamp_offset", new NoArgSQLFunction("sysdatetimeoffset", NHibernateUtil.DateTimeOffset, true)); + } + + protected override void RegisterKeywords() + { + base.RegisterKeywords(); RegisterKeyword("datetime2"); RegisterKeyword("datetimeoffset"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |