diff --git a/DataAccessTier/App.config b/DataAccessTier/App.config index 7e8f38006aec10e7f35fe2b45b4e3ddc316ddce7..ce2fb3979398857f651f7269bb031ddf0fcae31b 100644 --- a/DataAccessTier/App.config +++ b/DataAccessTier/App.config @@ -1,52 +1,50 @@ <?xml version="1.0" encoding="utf-8"?> <configuration> - <configSections> + <configSections> - <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> - - <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <section name="HaaSMiddleware.DataAccessTier.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> - <section name="DataAccessLayer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> - </sectionGroup> - <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections> - <entityFramework> - <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> - <providers> - <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> - </providers> - </entityFramework> + <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> + + <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <section name="HaaSMiddleware.DataAccessTier.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> + <section name="DataAccessLayer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> + </sectionGroup> + <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> + <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > + <section name="HaaSMiddleware.DataAccessTier.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> + </sectionGroup> + </configSections> + <entityFramework> + <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> + <providers> + <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> + </providers> + </entityFramework> <connectionStrings> <add name="HaaSMiddleware.DataAccessTier.Properties.Settings.MiddlewareContext" - connectionString="Data Source=DELLG5;Database=HaaS_Middleware;integrated security=True;" + connectionString="Data Source=DELLG5;Database=HaaS_Middleware_1;integrated security=True;" providerName="System.Data.SqlClient" /> </connectionStrings> - <!--connectionString="Server=HAAS\SQLEXPRESS;Database=HaaS_Middleware_fiji;User Id=haasuser;Password=haaspass;"--> - <!--connectionString="Server=SVA162-NB\SQLEXPRESS;Database=HaaS_Middleware;User Id=haasuser;Password=haaspass;"--> - <!--connectionString="Server=HAAS\SQLEXPRESS;Database=HaaS_Middleware_Papcel;User Id=haasuser;Password=haaspass;"--> - <!--connectionString="Server=UTEPSTORAGE\SQLEXPRESS;Database=HaaS_Middleware;User Id=haasuser;Password=haaspass;"--> - <!--connectionString="Server=UTEPSTORAGE\SQLEXPRESS;Database=HaaS_Middleware_fiji;User Id=haasuser;Password=haaspass;"--> - <!--connectionString="Server=floreonwia.vsb.cz;Database=HaaS_Middleware;User Id=s_floreon;Password=Martinovicuv2Mazlik2015;"--> - <!--connectionString="Data Source=localhost;Initial Catalog=HaaS_Middleware;Trusted_Connection=SSPI"--> - <!--connectionString="Server=FLOREONWIA\SQLEXPRESS;Database=HaaS_Middleware;User Id=s_floreon;Password=Martinovicuv2Mazlik2015;"--> - <!--connectionString="Server=DHIRELEASE\SQLEXPRESSDHI;Database=HaaS_Middleware;User Id=haasuser;Password=haaspass;"--> - <!--connectionString="Data Source=195.113.250.27;Initial Catalog=HaaS_Middleware;Trusted_Connection=yes"--> - <!--Production: Data Source=localhost;Initial Catalog=HaaS_Middleware;Trusted_Connection=yes--> - <!--Development: Data Source=floreon2.cs.vsb.cz;Initial Catalog=HaaS_Middleware;User ID=s_floreon;Password=Martinovicuv2Mazlik2015;MultipleActiveResultSets=True--> - <!--Entity Framework Migrations: Data Source=195.113.250.18;Initial Catalog=HaaS_Middleware;Trusted_Connection=yes--> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> - </startup> - <applicationSettings> - <HaaSMiddleware.DataAccessTier.Properties.Settings> - <setting name="DatabaseRepositoryType" serializeAs="String"> - <value>LinqToEntities</value> - </setting> - </HaaSMiddleware.DataAccessTier.Properties.Settings> - <DataAccessLayer.Properties.Settings> - <setting name="RepositoryType" serializeAs="String"> - <value>LinqToEntities</value> - </setting> - </DataAccessLayer.Properties.Settings> - </applicationSettings> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> + </startup> + <applicationSettings> + <HaaSMiddleware.DataAccessTier.Properties.Settings> + <setting name="DatabaseRepositoryType" serializeAs="String"> + <value>LinqToEntities</value> + </setting> + </HaaSMiddleware.DataAccessTier.Properties.Settings> + <DataAccessLayer.Properties.Settings> + <setting name="RepositoryType" serializeAs="String"> + <value>LinqToEntities</value> + </setting> + </DataAccessLayer.Properties.Settings> + </applicationSettings> + <userSettings> + <HaaSMiddleware.DataAccessTier.Properties.Settings> + <setting name="CustomMiddlewareContext" serializeAs="String"> + <value>Data Source=DELLG5;Database=HaaS_Middleware_1;integrated security=True;</value> + </setting> + </HaaSMiddleware.DataAccessTier.Properties.Settings> + </userSettings> </configuration> \ No newline at end of file diff --git a/DataAccessTier/DataAccessTier.csproj b/DataAccessTier/DataAccessTier.csproj index 5a176eb7a3972fd3c2a0a8ca232b082ac78058eb..826c769443bf66ebe39c4577dbaa0251d8d415b0 100644 --- a/DataAccessTier/DataAccessTier.csproj +++ b/DataAccessTier/DataAccessTier.csproj @@ -50,6 +50,7 @@ <Reference Include="System.ComponentModel.DataAnnotations" /> <Reference Include="System.configuration" /> <Reference Include="System.Core" /> + <Reference Include="System.Data" /> <Reference Include="System.Xml.Linq" /> </ItemGroup> <ItemGroup> @@ -59,11 +60,8 @@ <Compile Include="Factory\UnitOfWork\UnitOfWorkFactory.cs" /> <Compile Include="Factory\UnitOfWork\DatabaseUnitOfWorkFactory.cs" /> <Compile Include="Factory\UnitOfWork\UnitOfWorkType.cs" /> - <Compile Include="Migrations\201711011130556_InitialCreate.cs" /> - <Compile Include="Migrations\201711011130556_InitialCreate.Designer.cs"> - <DependentUpon>201711011130556_InitialCreate.cs</DependentUpon> - </Compile> <Compile Include="Migrations\Configuration.cs" /> + <Compile Include="Migrations\CreateIfNotExistOrMigrateDatabaseInitializer.cs" /> <Compile Include="Properties\Settings.Designer.cs"> <AutoGen>True</AutoGen> <DesignTimeSharedInput>True</DesignTimeSharedInput> @@ -125,11 +123,6 @@ <Name>DomainObjects</Name> </ProjectReference> </ItemGroup> - <ItemGroup> - <EmbeddedResource Include="Migrations\201711011130556_InitialCreate.resx"> - <DependentUpon>201711011130556_InitialCreate.cs</DependentUpon> - </EmbeddedResource> - </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. diff --git a/DataAccessTier/MiddlewareContext.cs b/DataAccessTier/MiddlewareContext.cs index 8c6f6c137cc86f3bdeb54247511c981f909830eb..25c394d649b487fbeed8a9b2c99980e45c2dbff8 100644 --- a/DataAccessTier/MiddlewareContext.cs +++ b/DataAccessTier/MiddlewareContext.cs @@ -1,6 +1,10 @@ +using System; +using System.Data.Common; using System.Data.Entity; +using System.Data.Entity.Core.EntityClient; using System.Data.Entity.Migrations; +using System.Data.SqlClient; using HaaSMiddleware.DataAccessTier.Migrations; using HaaSMiddleware.DomainObjects.AdminUserManagement; using HaaSMiddleware.DomainObjects.ClusterInformation; @@ -10,80 +14,86 @@ using HaaSMiddleware.DomainObjects.JobManagement.JobInformation; using HaaSMiddleware.DomainObjects.Notifications; using HaaSMiddleware.DomainObjects.UserAndLimitationManagement; -namespace HaaSMiddleware.DataAccessTier { +namespace HaaSMiddleware.DataAccessTier +{ + + internal class MiddlewareContext : DbContext + { + public MiddlewareContext() : base(Properties.Settings.Default.CustomMiddlewareContext) + { + //"name=MiddlewareContext") { - internal class MiddlewareContext : DbContext { - public MiddlewareContext() - : base(DataAccessTier.Properties.Settings.Default.MiddlewareContext) { //"name=MiddlewareContext") { //Database.SetInitializer(new CreateDatabaseIfNotExists<MiddlewareContext>()); - Database.SetInitializer(new MigrateDatabaseToLatestVersion<MiddlewareContext, Configuration>()); + //Database.SetInitializer(new MigrateDatabaseToLatestVersion<MiddlewareContext, Configuration>()); + Database.SetInitializer(new CreateIfNotExistOrMigrateDatabaseInitializer<MiddlewareContext, Configuration>()); } - protected override void OnModelCreating(DbModelBuilder modelBuilder) { - base.OnModelCreating(modelBuilder); + protected override void OnModelCreating(DbModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); - string dbNamespace = System.Configuration.ConfigurationManager.AppSettings.Get("dbNamespace"); + //string dbNamespace = System.Configuration.ConfigurationManager.AppSettings.Get("dbNamespace"); + //modelBuilder.HasDefaultSchema(dbNamespace); - modelBuilder.HasDefaultSchema(dbNamespace); - // Set default schema - //modelBuilder.HasDefaultSchema("HaaS_Middleware"); + // Set default schema + //modelBuilder.HasDefaultSchema("HaaS_Middleware"); //modelBuilder.HasDefaultSchema("HaaS_Middleware_Test"); //modelBuilder.HasDefaultSchema("HaaS_Middleware_fiji"); //modelBuilder.HasDefaultSchema("HaaS_Middleware_DHI"); //modelBuilder.HasDefaultSchema("HaaS_Middleware_Papcel"); - // Separate JobTemplate and JobDescription - // into different tables - modelBuilder.Entity<JobSpecification>().ToTable("JobSpecification"); - modelBuilder.Entity<JobTemplate>().ToTable("JobTemplate"); - } - - #region AdminUserManagement Entities - public virtual DbSet<AdministrationRole> AdministrationRoles { get; set; } - public virtual DbSet<AdministrationUser> AdministrationUsers { get; set; } - #endregion - - #region ClusterInformation Entities - public virtual DbSet<Cluster> Clusters { get; set; } - public virtual DbSet<ClusterAuthenticationCredentials> ClusterAuthenticationCredentials { get; set; } - public virtual DbSet<ClusterNodeType> ClusterNodeTypes { get; set; } - #endregion - - #region FileTransfer Entities - public virtual DbSet<FileSpecification> FileSpecifications { get; set; } - public virtual DbSet<FileTransferMethod> FileTransferMethods { get; set; } - #endregion - - #region JobManagement.JobInformation Entities - public virtual DbSet<SubmittedJobInfo> SubmittedJobInfos { get; set; } - public virtual DbSet<SubmittedTaskInfo> SubmittedTaskInfos { get; set; } - #endregion - - #region JobManagement Entities - public virtual DbSet<CommandTemplate> CommandTemplates { get; set; } - public virtual DbSet<CommandTemplateParameter> CommandTemplateParameters { get; set; } - public virtual DbSet<CommandTemplateParameterValue> CommandTemplateParameterValues { get; set; } - public virtual DbSet<EnvironmentVariable> EnvironmentVariables { get; set; } - public virtual DbSet<JobSpecification> JobSpecifications { get; set; } - public virtual DbSet<JobTemplate> JobTemplates { get; set; } - public virtual DbSet<PropertyChangeSpecification> PropertyChangeSpecifications { get; set; } - public virtual DbSet<TaskSpecification> TaskSpecifications { get; set; } - #endregion - - #region Notifications Entities - public virtual DbSet<Language> Languages { get; set; } - public virtual DbSet<MessageLocalization> MessageLocalizations { get; set; } - public virtual DbSet<MessageTemplate> MessageTemplates { get; set; } - public virtual DbSet<MessageTemplateParameter> MessageTemplateParameters { get; set; } - public virtual DbSet<Notification> Notifications { get; set; } - #endregion - - #region UserAndLimitationManagement Entities - public virtual DbSet<AdaptorUser> AdaptorUsers { get; set; } - public virtual DbSet<AdaptorUserGroup> AdaptorUserGroups { get; set; } - public virtual DbSet<ResourceLimitation> ResourceLimitations { get; set; } - public virtual DbSet<SessionCode> SessionCodes { get; set; } - #endregion - } + // Separate JobTemplate and JobDescription + // into different tables + modelBuilder.Entity<JobSpecification>().ToTable("JobSpecification"); + modelBuilder.Entity<JobTemplate>().ToTable("JobTemplate"); + } + + #region AdminUserManagement Entities + public virtual DbSet<AdministrationRole> AdministrationRoles { get; set; } + public virtual DbSet<AdministrationUser> AdministrationUsers { get; set; } + #endregion + + #region ClusterInformation Entities + public virtual DbSet<Cluster> Clusters { get; set; } + public virtual DbSet<ClusterAuthenticationCredentials> ClusterAuthenticationCredentials { get; set; } + public virtual DbSet<ClusterNodeType> ClusterNodeTypes { get; set; } + #endregion + + #region FileTransfer Entities + public virtual DbSet<FileSpecification> FileSpecifications { get; set; } + public virtual DbSet<FileTransferMethod> FileTransferMethods { get; set; } + #endregion + + #region JobManagement.JobInformation Entities + public virtual DbSet<SubmittedJobInfo> SubmittedJobInfos { get; set; } + public virtual DbSet<SubmittedTaskInfo> SubmittedTaskInfos { get; set; } + #endregion + + #region JobManagement Entities + public virtual DbSet<CommandTemplate> CommandTemplates { get; set; } + public virtual DbSet<CommandTemplateParameter> CommandTemplateParameters { get; set; } + public virtual DbSet<CommandTemplateParameterValue> CommandTemplateParameterValues { get; set; } + public virtual DbSet<EnvironmentVariable> EnvironmentVariables { get; set; } + public virtual DbSet<JobSpecification> JobSpecifications { get; set; } + public virtual DbSet<JobTemplate> JobTemplates { get; set; } + public virtual DbSet<PropertyChangeSpecification> PropertyChangeSpecifications { get; set; } + public virtual DbSet<TaskSpecification> TaskSpecifications { get; set; } + #endregion + + #region Notifications Entities + public virtual DbSet<Language> Languages { get; set; } + public virtual DbSet<MessageLocalization> MessageLocalizations { get; set; } + public virtual DbSet<MessageTemplate> MessageTemplates { get; set; } + public virtual DbSet<MessageTemplateParameter> MessageTemplateParameters { get; set; } + public virtual DbSet<Notification> Notifications { get; set; } + #endregion + + #region UserAndLimitationManagement Entities + public virtual DbSet<AdaptorUser> AdaptorUsers { get; set; } + public virtual DbSet<AdaptorUserGroup> AdaptorUserGroups { get; set; } + public virtual DbSet<ResourceLimitation> ResourceLimitations { get; set; } + public virtual DbSet<SessionCode> SessionCodes { get; set; } + #endregion + } } \ No newline at end of file diff --git a/DataAccessTier/Migrations/Configuration.cs b/DataAccessTier/Migrations/Configuration.cs index 5b4a83fce8334c36590e35f0a45e38f3eeb4fa81..1c31b3103029c5d5056097fa71ae303a27d2b506 100644 --- a/DataAccessTier/Migrations/Configuration.cs +++ b/DataAccessTier/Migrations/Configuration.cs @@ -12,7 +12,7 @@ namespace HaaSMiddleware.DataAccessTier.Migrations public Configuration() { AutomaticMigrationsEnabled = true; - AutomaticMigrationDataLossAllowed = true; + AutomaticMigrationDataLossAllowed = true; } protected override void Seed(HaaSMiddleware.DataAccessTier.MiddlewareContext context) diff --git a/DataAccessTier/Migrations/CreateIfNotExistOrMigrateDatabaseInitializer.cs b/DataAccessTier/Migrations/CreateIfNotExistOrMigrateDatabaseInitializer.cs new file mode 100644 index 0000000000000000000000000000000000000000..37ed0804b4b7e15ff1c104d550b7803fe25a1c8f --- /dev/null +++ b/DataAccessTier/Migrations/CreateIfNotExistOrMigrateDatabaseInitializer.cs @@ -0,0 +1,34 @@ +using System.Data.Entity; +using System.Data.Entity.Migrations; + +namespace HaaSMiddleware.DataAccessTier.Migrations +{ + internal class CreateIfNotExistOrMigrateDatabaseInitializer<TContext, TConfiguration> : CreateDatabaseIfNotExists<TContext>, IDatabaseInitializer<TContext> + where TContext : DbContext + where TConfiguration : DbMigrationsConfiguration<TContext>, new() + { + private readonly DbMigrationsConfiguration _migrationConfiguration; + internal CreateIfNotExistOrMigrateDatabaseInitializer() + { + _migrationConfiguration = new TConfiguration(); + } + + void IDatabaseInitializer<TContext>.InitializeDatabase(TContext context) + { + bool createDatabase = !context.Database.Exists(); + + var migrator = new DbMigrator(_migrationConfiguration); + + //if (migrator.GetPendingMigrations().Any()) + migrator.Update(); + + base.InitializeDatabase(context); + + if (createDatabase) + { + Seed(context); + context.SaveChanges(); + } + } + } +} diff --git a/DataAccessTier/Migrations/201711011130556_InitialCreate.Designer.cs b/DataAccessTier/Migrations/initial_create_migration/201711011130556_InitialCreate.Designer.cs similarity index 100% rename from DataAccessTier/Migrations/201711011130556_InitialCreate.Designer.cs rename to DataAccessTier/Migrations/initial_create_migration/201711011130556_InitialCreate.Designer.cs diff --git a/DataAccessTier/Migrations/201711011130556_InitialCreate.cs b/DataAccessTier/Migrations/initial_create_migration/201711011130556_InitialCreate.cs similarity index 100% rename from DataAccessTier/Migrations/201711011130556_InitialCreate.cs rename to DataAccessTier/Migrations/initial_create_migration/201711011130556_InitialCreate.cs diff --git a/DataAccessTier/Migrations/201711011130556_InitialCreate.resx b/DataAccessTier/Migrations/initial_create_migration/201711011130556_InitialCreate.resx similarity index 100% rename from DataAccessTier/Migrations/201711011130556_InitialCreate.resx rename to DataAccessTier/Migrations/initial_create_migration/201711011130556_InitialCreate.resx diff --git a/DataAccessTier/Properties/Settings.Designer.cs b/DataAccessTier/Properties/Settings.Designer.cs index 136b2a5ce46c22d14e1644c287d47c530515bd53..47469f25e5edab84dbde2e047351591f152c1bb4 100644 --- a/DataAccessTier/Properties/Settings.Designer.cs +++ b/DataAccessTier/Properties/Settings.Designer.cs @@ -35,11 +35,23 @@ namespace HaaSMiddleware.DataAccessTier.Properties { [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)] - [global::System.Configuration.DefaultSettingValueAttribute("Data Source=DELLG5;Database=HaaS_Middleware;integrated security=True;")] + [global::System.Configuration.DefaultSettingValueAttribute("Data Source=DELLG5;Database=HaaS_Middleware_1;integrated security=True;")] public string MiddlewareContext { get { return ((string)(this["MiddlewareContext"])); } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("Data Source=DELLG5;Database=HaaS_Middleware_1;integrated security=True;")] + public string CustomMiddlewareContext { + get { + return ((string)(this["CustomMiddlewareContext"])); + } + set { + this["CustomMiddlewareContext"] = value; + } + } } } diff --git a/DataAccessTier/Properties/Settings.settings b/DataAccessTier/Properties/Settings.settings index c6c9c22c3c4cf8b81e90e72f859662f1b152f48e..fcc42ca799d760dda0ac4f21860422963efed1b5 100644 --- a/DataAccessTier/Properties/Settings.settings +++ b/DataAccessTier/Properties/Settings.settings @@ -8,10 +8,13 @@ <Setting Name="MiddlewareContext" Type="(Connection string)" Scope="Application"> <DesignTimeValue Profile="(Default)"><?xml version="1.0" encoding="utf-16"?> <SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - <ConnectionString>Data Source=DELLG5;Database=HaaS_Middleware;integrated security=True;</ConnectionString> + <ConnectionString>Data Source=DELLG5;Database=HaaS_Middleware_1;integrated security=True;</ConnectionString> <ProviderName>System.Data.SqlClient</ProviderName> </SerializableConnectionString></DesignTimeValue> - <Value Profile="(Default)">Data Source=DELLG5;Database=HaaS_Middleware;integrated security=True;</Value> + <Value Profile="(Default)">Data Source=DELLG5;Database=HaaS_Middleware_1;integrated security=True;</Value> + </Setting> + <Setting Name="CustomMiddlewareContext" Type="System.String" Scope="User"> + <Value Profile="(Default)">Data Source=DELLG5;Database=HaaS_Middleware_1;integrated security=True;</Value> </Setting> </Settings> </SettingsFile> \ No newline at end of file diff --git a/DataAccessTier/UnitOfWork/DatabaseUnitOfWork.cs b/DataAccessTier/UnitOfWork/DatabaseUnitOfWork.cs index 423e830b0a77db7ce840b5483bec82b5d51c44fb..dee8357414f612afc368cf46297ef07d877ed2b6 100644 --- a/DataAccessTier/UnitOfWork/DatabaseUnitOfWork.cs +++ b/DataAccessTier/UnitOfWork/DatabaseUnitOfWork.cs @@ -19,8 +19,17 @@ namespace HaaSMiddleware.DataAccessTier.UnitOfWork { this.repositoryType = RepositoryType.LinqToEntities; } - #region Repositories - private IAdaptorUserGroupRepository adaptorUserGroupRepository; + public DatabaseUnitOfWork(string connString) + { + Properties.Settings.Default.CustomMiddlewareContext = connString; + //Properties.Settings.Default.Save(); + this.context = new MiddlewareContext(); + if (!Enum.TryParse(ConfigurationManager.AppSettings["DatabaseRepositoryType"], out this.repositoryType)) + this.repositoryType = RepositoryType.LinqToEntities; + } + + #region Repositories + private IAdaptorUserGroupRepository adaptorUserGroupRepository; private IAdaptorUserRepository adaptorUserRepository; private IAdministrationRoleRepository administrationRoleRepository; private IAdministrationUserRepository administrationUserRepository; diff --git a/DomainObjects/Notifications/Language.cs b/DomainObjects/Notifications/Language.cs index 90345a965b3d7674e5ac5e73ca18f959a8fd38c9..e37ce0c0a047df1c92bee4e03e777961166c07e2 100644 --- a/DomainObjects/Notifications/Language.cs +++ b/DomainObjects/Notifications/Language.cs @@ -11,8 +11,5 @@ namespace HaaSMiddleware.DomainObjects.Notifications { [Required] [StringLength(50)] public string Name { get; set; } - - //[StringLength(10)] - //public string TestColumn { get; set; } } } \ No newline at end of file diff --git a/HpcAsAServiceMiddleware.sln b/HpcAsAServiceMiddleware.sln index 82229bf447cc45ef62dc92469280849c0e2cdc83..d2f0e2b68e536ca38c0f7c11aad2a3c8176e389f 100644 --- a/HpcAsAServiceMiddleware.sln +++ b/HpcAsAServiceMiddleware.sln @@ -35,6 +35,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebServices", "WebServices\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WsClient", "WsClient\WsClient.csproj", "{542A281B-8D70-45A1-9556-81B4B38B04FA}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiddlewareTests", "MiddlewareTests\MiddlewareTests.csproj", "{4EDA931F-42A9-414E-B6C7-2CFDA19A657E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution CD_ROM|Any CPU = CD_ROM|Any CPU @@ -461,6 +463,36 @@ Global {542A281B-8D70-45A1-9556-81B4B38B04FA}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU {542A281B-8D70-45A1-9556-81B4B38B04FA}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU {542A281B-8D70-45A1-9556-81B4B38B04FA}.SingleImage|x86.ActiveCfg = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.CD_ROM|Any CPU.Build.0 = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.CD_ROM|Mixed Platforms.Build.0 = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.CD_ROM|x86.ActiveCfg = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.CD_ROM|x86.Build.0 = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.Debug|x86.ActiveCfg = Debug|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.Debug|x86.Build.0 = Debug|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.DVD-5|Any CPU.Build.0 = Debug|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.DVD-5|x86.ActiveCfg = Debug|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.DVD-5|x86.Build.0 = Debug|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.Release|Any CPU.Build.0 = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.Release|x86.ActiveCfg = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.Release|x86.Build.0 = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.SingleImage|Any CPU.Build.0 = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.SingleImage|x86.ActiveCfg = Release|Any CPU + {4EDA931F-42A9-414E-B6C7-2CFDA19A657E}.SingleImage|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/MiddlewareTests/App.config b/MiddlewareTests/App.config new file mode 100644 index 0000000000000000000000000000000000000000..4c0088870d188c5060b39fc0028a4260c344ff4f --- /dev/null +++ b/MiddlewareTests/App.config @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<configuration> + <configSections> + <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> + <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> + </configSections> + <appSettings> + <add key="dbNamespace" value="HaaS_Middleware" /> + </appSettings> + <entityFramework> + <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> + <parameters> + <parameter value="mssqllocaldb" /> + </parameters> + </defaultConnectionFactory> + <providers> + <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> + </providers> + </entityFramework> +</configuration> \ No newline at end of file diff --git a/MiddlewareTests/MiddlewareTests.csproj b/MiddlewareTests/MiddlewareTests.csproj new file mode 100644 index 0000000000000000000000000000000000000000..5c2752997cb5a425928a03ffb5fe43a68c9fbc87 --- /dev/null +++ b/MiddlewareTests/MiddlewareTests.csproj @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="..\packages\MSTest.TestAdapter.1.2.1\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.2.1\build\net45\MSTest.TestAdapter.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{4EDA931F-42A9-414E-B6C7-2CFDA19A657E}</ProjectGuid> + <OutputType>Exe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>MiddlewareTests</RootNamespace> + <AssemblyName>MiddlewareTests</AssemblyName> + <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> + <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion> + <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> + <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath> + <IsCodedUITest>False</IsCodedUITest> + <TestProjectType>UnitTest</TestProjectType> + <NuGetPackageImportStamp> + </NuGetPackageImportStamp> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup> + <StartupObject /> + </PropertyGroup> + <ItemGroup> + <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> + <HintPath>..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath> + </Reference> + <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> + <HintPath>..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll</HintPath> + </Reference> + <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> + <HintPath>..\packages\MSTest.TestFramework.1.2.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath> + </Reference> + <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> + <HintPath>..\packages\MSTest.TestFramework.1.2.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.ComponentModel.DataAnnotations" /> + <Reference Include="System.Core" /> + </ItemGroup> + <ItemGroup> + <Compile Include="UnitTest1.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="App.config" /> + <None Include="packages.config" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\DataAccessTier\DataAccessTier.csproj"> + <Project>{88827c9b-82af-4302-ac72-4a2636e839eb}</Project> + <Name>DataAccessTier</Name> + </ProjectReference> + <ProjectReference Include="..\DomainObjects\DomainObjects.csproj"> + <Project>{c3f683c1-16c6-4f99-8ecb-118bac0788c3}</Project> + <Name>DomainObjects</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" /> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> + <PropertyGroup> + <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> + </PropertyGroup> + <Error Condition="!Exists('..\packages\MSTest.TestAdapter.1.2.1\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.2.1\build\net45\MSTest.TestAdapter.props'))" /> + <Error Condition="!Exists('..\packages\MSTest.TestAdapter.1.2.1\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.2.1\build\net45\MSTest.TestAdapter.targets'))" /> + </Target> + <Import Project="..\packages\MSTest.TestAdapter.1.2.1\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.1.2.1\build\net45\MSTest.TestAdapter.targets')" /> +</Project> \ No newline at end of file diff --git a/MiddlewareTests/Properties/AssemblyInfo.cs b/MiddlewareTests/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000000000000000000000000000000000..c8ffa01de1be07c3aabf3a10f19f9928849a3909 --- /dev/null +++ b/MiddlewareTests/Properties/AssemblyInfo.cs @@ -0,0 +1,20 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +[assembly: AssemblyTitle("MiddlewareTests")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MiddlewareTests")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +[assembly: ComVisible(false)] + +[assembly: Guid("4eda931f-42a9-414e-b6c7-2cfda19a657e")] + +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/MiddlewareTests/UnitTest1.cs b/MiddlewareTests/UnitTest1.cs new file mode 100644 index 0000000000000000000000000000000000000000..4bcd15a6dc8a806f61e3f0610e3eec703d308b7b --- /dev/null +++ b/MiddlewareTests/UnitTest1.cs @@ -0,0 +1,27 @@ +using System; +using HaaSMiddleware.DataAccessTier.UnitOfWork; +using HaaSMiddleware.DomainObjects.ClusterInformation; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace MiddlewareTests +{ + [TestClass] + public class UnitTest1 + { + [TestMethod] + public static void Main () + { + TestCustomDb("Data Source=DELLG5;Database=HaaS_Middleware_1;integrated security=True;"); + TestCustomDb("Data Source=DELLG5;Database=HaaS_Middleware_2;integrated security=True;"); + } + + private static void TestCustomDb(string connString) + { + DatabaseUnitOfWork uof = new DatabaseUnitOfWork(connString); + foreach (Cluster c in uof.ClusterRepository.GetAll()) + { + Console.WriteLine(c); + } + } + } +} diff --git a/MiddlewareTests/packages.config b/MiddlewareTests/packages.config new file mode 100644 index 0000000000000000000000000000000000000000..1301c1730bf2fd143cf5add7c0c743f2bdc2e9cf --- /dev/null +++ b/MiddlewareTests/packages.config @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="EntityFramework" version="6.2.0" targetFramework="net471" /> + <package id="MSTest.TestAdapter" version="1.2.1" targetFramework="net471" /> + <package id="MSTest.TestFramework" version="1.2.1" targetFramework="net471" /> +</packages> \ No newline at end of file diff --git a/WebServices/WebServices.csproj.user b/WebServices/WebServices.csproj.user index 1c7f7a403613609db2f164d6322e8b4a0336fdde..ff00e0210c8577ffb5d38913f3bfe3ec9bb51592 100644 --- a/WebServices/WebServices.csproj.user +++ b/WebServices/WebServices.csproj.user @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> - <NameOfLastUsedPublishProfile>CiCdPublish</NameOfLastUsedPublishProfile> + <NameOfLastUsedPublishProfile>Local</NameOfLastUsedPublishProfile> <LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig> <UseIISExpress>true</UseIISExpress> <Use64BitIISExpress />