From 67dea3ad353cce22cced644d4d7b01184db1f890 Mon Sep 17 00:00:00 2001 From: Mantas Janulionis Date: Mon, 4 May 2015 16:59:36 +0300 Subject: [PATCH] Improved migrations and fixed unit tests --- .../Migrations/DefaultMigration.cs | 46 ++++++++++++++----- BetterModules.Core/Models/EntityMapBase.cs | 33 +++++++------ .../Models/EntitySubClassMapBase.cs | 29 +++++++----- 3 files changed, 70 insertions(+), 38 deletions(-) diff --git a/BetterModules.Core/DataAccess/DataContext/Migrations/DefaultMigration.cs b/BetterModules.Core/DataAccess/DataContext/Migrations/DefaultMigration.cs index e358441..de62af1 100644 --- a/BetterModules.Core/DataAccess/DataContext/Migrations/DefaultMigration.cs +++ b/BetterModules.Core/DataAccess/DataContext/Migrations/DefaultMigration.cs @@ -10,9 +10,11 @@ namespace BetterModules.Core.DataAccess.DataContext.Migrations { public abstract class DefaultMigration : Migration { - protected const string PostgresThrowNotSupportedErrorSql = "RAISE EXCEPTION 'NOT SUPPORTED IN CURRENT VERSION!';"; + protected const string PostgresThrowNotSupportedErrorSql = + "RAISE EXCEPTION 'NOT SUPPORTED IN CURRENT VERSION!';"; - protected const string OracleThrowNotSupportedErrorSql = "raise_application_error(-1, 'NOT SUPPORTED IN CURRENT VERSION!');"; + protected const string OracleThrowNotSupportedErrorSql = + "raise_application_error(-1, 'NOT SUPPORTED IN CURRENT VERSION!');"; private readonly string moduleName; @@ -20,23 +22,42 @@ public abstract class DefaultMigration : Migration public string SchemaName { - get - { - return schemaName ?? (schemaName = SchemaNameProvider.GetSchemaName(moduleName)); - } + get { return schemaName ?? (schemaName = SchemaNameProvider.GetSchemaName(moduleName)); } } public DefaultMigration(string moduleName) { this.moduleName = moduleName; - var currentModule = ModulesRegistrationSingleton.Instance.GetModules().First(module => module.ModuleDescriptor.Name == moduleName); - schemaName = currentModule.ModuleDescriptor.SchemaName; + var currentModule = ModulesRegistrationSingleton.Instance.GetModules() + .FirstOrDefault( + module => module.ModuleDescriptor != null && module.ModuleDescriptor.Name == moduleName); + if (currentModule != null) + { + schemaName = currentModule.ModuleDescriptor.SchemaName; + } } public DefaultMigration(Type moduleDescriptorType) { - var currentModule = ModulesRegistrationSingleton.Instance.GetModules().First(module => module.ModuleDescriptor.GetType() == moduleDescriptorType); - schemaName = currentModule.ModuleDescriptor.SchemaName; + var currentModule = ModulesRegistrationSingleton.Instance.GetModules() + .FirstOrDefault( + module => module.ModuleDescriptor != null && module.ModuleDescriptor.GetType() == moduleDescriptorType); + if (currentModule != null) + { + schemaName = currentModule.ModuleDescriptor.SchemaName; + } + } + + public DefaultMigration() + { + var assembly = this.GetType().Assembly; + var currentModule = ModulesRegistrationSingleton.Instance.GetModules() + .FirstOrDefault( + module => module.ModuleDescriptor != null && module.ModuleDescriptor.AssemblyName == assembly.GetName()); + if (currentModule != null) + { + schemaName = currentModule.ModuleDescriptor.SchemaName; + } } /// @@ -44,7 +65,8 @@ public DefaultMigration(Type moduleDescriptorType) /// public override void Down() { - throw new CoreException("Down migration not possible.", new NotSupportedException("Application doesn't support DOWN migrations.")); + throw new CoreException("Down migration not possible.", + new NotSupportedException("Application doesn't support DOWN migrations.")); } protected IIfDatabaseExpressionRoot IfSqlServer() @@ -62,4 +84,4 @@ protected IIfDatabaseExpressionRoot IfOracle() return IfDatabase("Oracle"); } } -} +} \ No newline at end of file diff --git a/BetterModules.Core/Models/EntityMapBase.cs b/BetterModules.Core/Models/EntityMapBase.cs index 7c4f978..b05668c 100644 --- a/BetterModules.Core/Models/EntityMapBase.cs +++ b/BetterModules.Core/Models/EntityMapBase.cs @@ -1,12 +1,8 @@ using System; using System.Linq; -using System.Reflection; -using Autofac; using BetterModules.Core.DataContracts; -using BetterModules.Core.Dependencies; using BetterModules.Core.Modules.Registration; using FluentNHibernate.Mapping; -using NHibernate; namespace BetterModules.Core.Models { @@ -48,8 +44,13 @@ protected string SchemaName protected EntityMapBase(string moduleName) { this.moduleName = moduleName; - var currentModule = ModulesRegistrationSingleton.Instance.GetModules().First(module => module.ModuleDescriptor.Name == moduleName); - schemaName = currentModule.ModuleDescriptor.SchemaName; + var currentModule = ModulesRegistrationSingleton.Instance.GetModules() + .FirstOrDefault( + module => module.ModuleDescriptor != null && module.ModuleDescriptor.Name == moduleName); + if (currentModule != null) + { + schemaName = currentModule.ModuleDescriptor.SchemaName; + } Init(); } @@ -59,10 +60,13 @@ protected EntityMapBase(string moduleName) /// Type of the module descriptor. protected EntityMapBase(Type moduleDescriptorType) { - var currentModule = - ModulesRegistrationSingleton.Instance.GetModules() - .First(module => module.ModuleDescriptor.GetType() == moduleDescriptorType); - schemaName = currentModule.ModuleDescriptor.SchemaName; + var currentModule = ModulesRegistrationSingleton.Instance.GetModules() + .FirstOrDefault( + module => module.ModuleDescriptor != null && module.ModuleDescriptor.GetType() == moduleDescriptorType); + if (currentModule != null) + { + schemaName = currentModule.ModuleDescriptor.SchemaName; + } Init(); } @@ -71,15 +75,14 @@ protected EntityMapBase(Type moduleDescriptorType) /// protected EntityMapBase() { - var assembly = Assembly.GetExecutingAssembly(); - var currentModule = - ModulesRegistrationSingleton.Instance.GetModules() - .FirstOrDefault(module => module.ModuleDescriptor.AssemblyName == assembly.GetName()); + var assembly = this.GetType().Assembly; + var currentModule = ModulesRegistrationSingleton.Instance.GetModules() + .FirstOrDefault( + module => module.ModuleDescriptor != null && module.ModuleDescriptor.AssemblyName == assembly.GetName()); if (currentModule != null) { schemaName = currentModule.ModuleDescriptor.SchemaName; } - Init(); } diff --git a/BetterModules.Core/Models/EntitySubClassMapBase.cs b/BetterModules.Core/Models/EntitySubClassMapBase.cs index 2fc66a9..c3b2080 100644 --- a/BetterModules.Core/Models/EntitySubClassMapBase.cs +++ b/BetterModules.Core/Models/EntitySubClassMapBase.cs @@ -1,6 +1,5 @@ using System; using System.Linq; -using System.Reflection; using BetterModules.Core.Modules.Registration; using FluentNHibernate.Mapping; @@ -43,8 +42,13 @@ protected string SchemaName protected EntitySubClassMapBase(string moduleName) { this.moduleName = moduleName; - var currentModule = ModulesRegistrationSingleton.Instance.GetModules().First(module => module.ModuleDescriptor.Name == moduleName); - schemaName = currentModule.ModuleDescriptor.SchemaName; + var currentModule = ModulesRegistrationSingleton.Instance.GetModules() + .FirstOrDefault( + module => module.ModuleDescriptor != null && module.ModuleDescriptor.Name == moduleName); + if (currentModule != null) + { + schemaName = currentModule.ModuleDescriptor.SchemaName; + } Init(); } @@ -55,10 +59,13 @@ protected EntitySubClassMapBase(string moduleName) /// Type of the module descriptor. protected EntitySubClassMapBase(Type moduleDescriptorType) { - var currentModule = - ModulesRegistrationSingleton.Instance.GetModules() - .First(module => module.ModuleDescriptor.GetType() == moduleDescriptorType); - schemaName = currentModule.ModuleDescriptor.SchemaName; + var currentModule = ModulesRegistrationSingleton.Instance.GetModules() + .FirstOrDefault( + module => module.ModuleDescriptor != null && module.ModuleDescriptor.GetType() == moduleDescriptorType); + if (currentModule != null) + { + schemaName = currentModule.ModuleDescriptor.SchemaName; + } Init(); } @@ -67,10 +74,10 @@ protected EntitySubClassMapBase(Type moduleDescriptorType) /// protected EntitySubClassMapBase() { - var assembly = Assembly.GetExecutingAssembly(); - var currentModule = - ModulesRegistrationSingleton.Instance.GetModules() - .FirstOrDefault(module => module.ModuleDescriptor.AssemblyName == assembly.GetName()); + var assembly = this.GetType().Assembly; + var currentModule = ModulesRegistrationSingleton.Instance.GetModules() + .FirstOrDefault( + module => module.ModuleDescriptor != null && module.ModuleDescriptor.AssemblyName == assembly.GetName()); if (currentModule != null) { schemaName = currentModule.ModuleDescriptor.SchemaName;