diff --git a/src/Migrator.Providers/Dialect.cs b/src/Migrator.Providers/Dialect.cs index 11df04dd..6f8ae1b6 100644 --- a/src/Migrator.Providers/Dialect.cs +++ b/src/Migrator.Providers/Dialect.cs @@ -22,11 +22,11 @@ protected Dialect() RegisterProperty(ColumnProperty.PrimaryKey, "PRIMARY KEY"); } - public abstract Type TransformationProvider { get; } + public abstract ITransformationProvider GetTransformationProvider(Dialect dialect, string connectionString); public ITransformationProvider NewProviderForDialect(string connectionString) { - return (ITransformationProvider) Activator.CreateInstance(TransformationProvider, this, connectionString); + return GetTransformationProvider(this, connectionString); } /// diff --git a/src/Migrator.Providers/Impl/Mysql/MysqlDialect.cs b/src/Migrator.Providers/Impl/Mysql/MysqlDialect.cs index 352e589c..a3fcdf0a 100644 --- a/src/Migrator.Providers/Impl/Mysql/MysqlDialect.cs +++ b/src/Migrator.Providers/Impl/Mysql/MysqlDialect.cs @@ -48,7 +48,10 @@ public MysqlDialect() RegisterProperty(ColumnProperty.Identity, "AUTO_INCREMENT"); } - public override Type TransformationProvider { get { return typeof(MySqlTransformationProvider); } } + public override ITransformationProvider GetTransformationProvider(Dialect dialect, string connectionString) + { + return new MySqlTransformationProvider(dialect, connectionString); + } public override string QuoteTemplate { diff --git a/src/Migrator.Providers/Impl/Oracle/OracleDialect.cs b/src/Migrator.Providers/Impl/Oracle/OracleDialect.cs index d97d5590..73593480 100644 --- a/src/Migrator.Providers/Impl/Oracle/OracleDialect.cs +++ b/src/Migrator.Providers/Impl/Oracle/OracleDialect.cs @@ -41,7 +41,9 @@ public OracleDialect() RegisterProperty(ColumnProperty.Null, String.Empty); } - public override Type TransformationProvider { get { return typeof(OracleTransformationProvider); } } - - } + public override ITransformationProvider GetTransformationProvider(Dialect dialect, string connectionString) + { + return new OracleTransformationProvider(dialect, connectionString); + } + } } \ No newline at end of file diff --git a/src/Migrator.Providers/Impl/PostgreSQL/PostgreSQLDialect.cs b/src/Migrator.Providers/Impl/PostgreSQL/PostgreSQLDialect.cs index 8dc0f830..349efa05 100644 --- a/src/Migrator.Providers/Impl/PostgreSQL/PostgreSQLDialect.cs +++ b/src/Migrator.Providers/Impl/PostgreSQL/PostgreSQLDialect.cs @@ -38,8 +38,11 @@ public PostgreSQLDialect() RegisterProperty(ColumnProperty.Identity, "serial"); } - public override Type TransformationProvider { get { return typeof(PostgreSQLTransformationProvider); } } - + public override ITransformationProvider GetTransformationProvider(Dialect dialect, string connectionString) + { + return new PostgreSQLTransformationProvider(dialect, connectionString); + } + public override bool TableNameNeedsQuote { get { return false; } diff --git a/src/Migrator.Providers/Impl/SQLite/SQLiteDialect.cs b/src/Migrator.Providers/Impl/SQLite/SQLiteDialect.cs index 0731f79e..cab2db4e 100644 --- a/src/Migrator.Providers/Impl/SQLite/SQLiteDialect.cs +++ b/src/Migrator.Providers/Impl/SQLite/SQLiteDialect.cs @@ -34,7 +34,10 @@ public SQLiteDialect() RegisterProperty(ColumnProperty.Identity, "AUTOINCREMENT"); } - public override Type TransformationProvider { get { return typeof(SQLiteTransformationProvider); } } + public override ITransformationProvider GetTransformationProvider(Dialect dialect, string connectionString) + { + return new SQLiteTransformationProvider(dialect, connectionString); + } public override bool NeedsNotNullForIdentity { diff --git a/src/Migrator.Providers/Impl/SqlServer/SqlServer2005Dialect.cs b/src/Migrator.Providers/Impl/SqlServer/SqlServer2005Dialect.cs index 00951f77..edbd4230 100644 --- a/src/Migrator.Providers/Impl/SqlServer/SqlServer2005Dialect.cs +++ b/src/Migrator.Providers/Impl/SqlServer/SqlServer2005Dialect.cs @@ -1,11 +1,11 @@ -using System; using System.Data; +using Migrator.Framework; namespace Migrator.Providers.SqlServer { public class SqlServer2005Dialect : SqlServerDialect { - public SqlServer2005Dialect() :base() + public SqlServer2005Dialect() { RegisterColumnType(DbType.AnsiString, 2147483647, "VARCHAR(MAX)"); RegisterColumnType(DbType.Binary, 2147483647, "VARBINARY(MAX)"); @@ -13,7 +13,9 @@ public SqlServer2005Dialect() :base() RegisterColumnType(DbType.Xml, "XML"); } - public override Type TransformationProvider { get { return typeof (SqlServerTransformationProvider); } } - + public override ITransformationProvider GetTransformationProvider(Dialect dialect, string connectionString) + { + return new SqlServerTransformationProvider(dialect, connectionString); + } } } diff --git a/src/Migrator.Providers/Impl/SqlServer/SqlServerCeDialect.cs b/src/Migrator.Providers/Impl/SqlServer/SqlServerCeDialect.cs index 5bc03dbc..fcd8ca7a 100644 --- a/src/Migrator.Providers/Impl/SqlServer/SqlServerCeDialect.cs +++ b/src/Migrator.Providers/Impl/SqlServer/SqlServerCeDialect.cs @@ -1,20 +1,23 @@ -using System; using System.Data; +using Migrator.Framework; namespace Migrator.Providers.SqlServer { - public class SqlServerCeDialect : SqlServerDialect - { + public class SqlServerCeDialect : SqlServerDialect + { public SqlServerCeDialect() - { + { RegisterColumnType(DbType.AnsiStringFixedLength, "NCHAR(255)"); RegisterColumnType(DbType.AnsiStringFixedLength, 4000, "NCHAR($l)"); RegisterColumnType(DbType.AnsiString, "NVARCHAR(255)"); RegisterColumnType(DbType.AnsiString, 4000, "NVARCHAR($l)"); RegisterColumnType(DbType.AnsiString, 1073741823, "TEXT"); - } + } - public override Type TransformationProvider { get { return typeof (SqlServerCeTransformationProvider); } } + public override ITransformationProvider GetTransformationProvider(Dialect dialect, string connectionString) + { + return new SqlServerCeTransformationProvider(dialect, connectionString); + } - } + } } diff --git a/src/Migrator.Providers/Impl/SqlServer/SqlServerDialect.cs b/src/Migrator.Providers/Impl/SqlServer/SqlServerDialect.cs index 7746134e..291814ea 100644 --- a/src/Migrator.Providers/Impl/SqlServer/SqlServerDialect.cs +++ b/src/Migrator.Providers/Impl/SqlServer/SqlServerDialect.cs @@ -40,7 +40,10 @@ public SqlServerDialect() RegisterProperty(ColumnProperty.Identity, "IDENTITY"); } - public override Type TransformationProvider { get { return typeof(SqlServerTransformationProvider); } } + public override ITransformationProvider GetTransformationProvider(Dialect dialect, string connectionString) + { + return new SqlServerTransformationProvider(dialect, connectionString); + } public override bool SupportsIndex {