From 7039e3f4c975ae2c27f4af8e8b66c9b6d43e1dc8 Mon Sep 17 00:00:00 2001 From: Jiri Cincura Date: Thu, 13 Jul 2017 15:31:22 +0200 Subject: [PATCH] Easier inherited implementations (DNET-754). --- .../DefaultFbMigrationSqlGeneratorBehavior.cs | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Provider/src/EntityFramework.Firebird/DefaultFbMigrationSqlGeneratorBehavior.cs b/Provider/src/EntityFramework.Firebird/DefaultFbMigrationSqlGeneratorBehavior.cs index aa8ed89f..5fa2628f 100644 --- a/Provider/src/EntityFramework.Firebird/DefaultFbMigrationSqlGeneratorBehavior.cs +++ b/Provider/src/EntityFramework.Firebird/DefaultFbMigrationSqlGeneratorBehavior.cs @@ -12,7 +12,7 @@ * express or implied. See the License for the specific * language governing rights and limitations under the License. * - * Copyright (c) 2014 Jiri Cincura (jiri@cincura.net) + * Copyright (c) 2014,2017 Jiri Cincura (jiri@cincura.net) * All Rights Reserved. * */ @@ -28,10 +28,9 @@ namespace FirebirdSql.Data.EntityFramework6 { public class DefaultFbMigrationSqlGeneratorBehavior : IFbMigrationSqlGeneratorBehavior { - const string IdentitySequenceName = "GEN_IDENTITY"; - - public IEnumerable CreateIdentityForColumn(string columnName, string tableName) + public virtual IEnumerable CreateIdentityForColumn(string columnName, string tableName) { + var identitySequenceName = CreateIdentitySequenceName(columnName, tableName); using (var writer = FbMigrationSqlGenerator.SqlWriter()) { writer.WriteLine("EXECUTE BLOCK"); @@ -39,13 +38,13 @@ public IEnumerable CreateIdentityForColumn(string columnName, string tab writer.WriteLine("BEGIN"); writer.Indent++; writer.Write("if (not exists(select 1 from rdb$generators where rdb$generator_name = '"); - writer.Write(IdentitySequenceName); + writer.Write(identitySequenceName); writer.Write("')) then"); writer.WriteLine(); writer.WriteLine("begin"); writer.Indent++; writer.Write("execute statement 'create sequence "); - writer.Write(IdentitySequenceName); + writer.Write(identitySequenceName); writer.Write("';"); writer.WriteLine(); writer.Indent--; @@ -74,7 +73,7 @@ public IEnumerable CreateIdentityForColumn(string columnName, string tab writer.Write("new."); writer.Write(FbMigrationSqlGenerator.Quote(columnName)); writer.Write(" = next value for "); - writer.Write(IdentitySequenceName); + writer.Write(identitySequenceName); writer.Write(";"); writer.WriteLine(); writer.Indent--; @@ -85,7 +84,7 @@ public IEnumerable CreateIdentityForColumn(string columnName, string tab } } - public IEnumerable DropIdentityForColumn(string columnName, string tableName) + public virtual IEnumerable DropIdentityForColumn(string columnName, string tableName) { var triggerName = CreateTriggerName(columnName, tableName); using (var writer = FbMigrationSqlGenerator.SqlWriter()) @@ -112,9 +111,14 @@ public IEnumerable DropIdentityForColumn(string columnName, string table } } - static string CreateTriggerName(string columnName, string tableName) + protected virtual string CreateTriggerName(string columnName, string tableName) { return string.Format("ID_{0}_{1}", tableName, columnName); } + + protected virtual string CreateIdentitySequenceName(string columnName, string tableName) + { + return "GEN_IDENTITY"; + } } }