|
From: <fab...@us...> - 2008-11-08 16:09:57
|
Revision: 3899
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3899&view=rev
Author: fabiomaulo
Date: 2008-11-08 16:09:54 +0000 (Sat, 08 Nov 2008)
Log Message:
-----------
Fix NH-1562 (schema update for SQLite by Mark Junker)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs
trunk/nhibernate/src/NHibernate/NHibernate.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate/Dialect/Schema/SQLiteMetaData.cs
Modified: trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2008-11-08 15:58:07 UTC (rev 3898)
+++ trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2008-11-08 16:09:54 UTC (rev 3899)
@@ -2,6 +2,7 @@
using System.Text;
using NHibernate.SqlCommand;
using NHibernate.Util;
+using System.Data.Common;
namespace NHibernate.Dialect
{
@@ -34,6 +35,7 @@
RegisterColumnType(DbType.Double, "NUMERIC");
RegisterColumnType(DbType.Single, "NUMERIC");
RegisterColumnType(DbType.VarNumeric, "NUMERIC");
+ RegisterColumnType(DbType.AnsiString, "TEXT");
RegisterColumnType(DbType.String, "TEXT");
RegisterColumnType(DbType.AnsiStringFixedLength, "TEXT");
RegisterColumnType(DbType.StringFixedLength, "TEXT");
@@ -44,6 +46,19 @@
RegisterColumnType(DbType.Guid, "UNIQUEIDENTIFIER");
}
+ public override Schema.IDataBaseSchema GetDataBaseSchema(DbConnection connection)
+ {
+ return new Schema.SQLiteDataBaseMetaData(connection);
+ }
+
+ public override string AddColumnString
+ {
+ get
+ {
+ return "add column";
+ }
+ }
+
public override string IdentitySelectString
{
get { return "select last_insert_rowid()"; }
Added: trunk/nhibernate/src/NHibernate/Dialect/Schema/SQLiteMetaData.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Dialect/Schema/SQLiteMetaData.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Dialect/Schema/SQLiteMetaData.cs 2008-11-08 16:09:54 UTC (rev 3899)
@@ -0,0 +1,102 @@
+using System;
+using System.Data;
+using System.Data.Common;
+
+namespace NHibernate.Dialect.Schema
+{
+ public class SQLiteDataBaseMetaData : AbstractDataBaseSchema
+ {
+ public SQLiteDataBaseMetaData(DbConnection connection) : base(connection) {}
+
+ public override ITableMetadata GetTableMetadata(DataRow rs, bool extras)
+ {
+ return new SQLiteTableMetaData(rs, this, extras);
+ }
+ }
+
+ public class SQLiteTableMetaData : AbstractTableMetadata
+ {
+ public SQLiteTableMetaData(DataRow rs, IDataBaseSchema meta, bool extras) : base(rs, meta, extras) {}
+
+ protected override IColumnMetadata GetColumnMetadata(DataRow rs)
+ {
+ return new SQLiteColumnMetaData(rs);
+ }
+
+ protected override string GetColumnName(DataRow rs)
+ {
+ return Convert.ToString(rs["COLUMN_NAME"]);
+ }
+
+ protected override string GetConstraintName(DataRow rs)
+ {
+ throw new NotImplementedException();
+ }
+
+ protected override IForeignKeyMetadata GetForeignKeyMetadata(DataRow rs)
+ {
+ return new SQLiteForeignKeyMetaData(rs);
+ }
+
+ protected override IIndexMetadata GetIndexMetadata(DataRow rs)
+ {
+ return new SQLiteIndexMetaData(rs);
+ }
+
+ protected override string GetIndexName(DataRow rs)
+ {
+ return Convert.ToString(rs["INDEX_NAME"]);
+ }
+
+ protected override void ParseTableInfo(DataRow rs)
+ {
+ Catalog = Convert.ToString(rs["TABLE_CATALOG"]);
+ Schema = Convert.ToString(rs["TABLE_SCHEMA"]);
+ if (string.IsNullOrEmpty(Catalog))
+ {
+ Catalog = null;
+ }
+ if (string.IsNullOrEmpty(Schema))
+ {
+ Schema = null;
+ }
+ Name = Convert.ToString(rs["TABLE_NAME"]);
+ }
+ }
+
+ public class SQLiteColumnMetaData : AbstractColumnMetaData
+ {
+ public SQLiteColumnMetaData(DataRow rs) : base(rs)
+ {
+ Name = Convert.ToString(rs["COLUMN_NAME"]);
+ object objValue = rs["CHARACTER_MAXIMUM_LENGTH"];
+ if (objValue != DBNull.Value)
+ {
+ ColumnSize = Convert.ToInt32(objValue);
+ }
+ objValue = rs["NUMERIC_PRECISION"];
+ if (objValue != DBNull.Value)
+ {
+ NumericalPrecision = Convert.ToInt32(objValue);
+ }
+ Nullable = Convert.ToString(rs["IS_NULLABLE"]);
+ TypeName = Convert.ToString(rs["DATA_TYPE"]);
+ }
+ }
+
+ public class SQLiteIndexMetaData : AbstractIndexMetadata
+ {
+ public SQLiteIndexMetaData(DataRow rs) : base(rs)
+ {
+ Name = Convert.ToString(rs["INDEX_NAME"]);
+ }
+ }
+
+ public class SQLiteForeignKeyMetaData : AbstractForeignKeyMetadata
+ {
+ public SQLiteForeignKeyMetaData(DataRow rs) : base(rs)
+ {
+ Name = Convert.ToString(rs["CONSTRAINT_NAME"]);
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2008-11-08 15:58:07 UTC (rev 3898)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2008-11-08 16:09:54 UTC (rev 3899)
@@ -443,6 +443,7 @@
<Compile Include="Bytecode\HibernateByteCodeException.cs" />
<Compile Include="Bytecode\ProxyFactoryFactoryNotConfiguredException.cs" />
<Compile Include="Bytecode\UnableToLoadProxyFactoryFactoryException.cs" />
+ <Compile Include="Dialect\Schema\SQLiteMetaData.cs" />
<Compile Include="Id\SelectGenerator.cs" />
<Compile Include="Properties\BackFieldStrategy.cs" />
<Compile Include="Bytecode\CodeDom\BytecodeProviderImpl.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|