Skip to content

Commit 7e3e887

Browse files
committed
Windows service with database project template added
1 parent d1e0585 commit 7e3e887

26 files changed

+431
-3
lines changed

Simplify.ProjectsTemplates.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33
<TargetFramework>netcoreapp3.1</TargetFramework>
44

55
<PackageType>Template</PackageType>
6-
<PackageVersion>0.2</PackageVersion>
6+
<PackageVersion>0.3</PackageVersion>
77
<PackageId>Simplify.ProjectsTemplates</PackageId>
88
<IsPackable>true</IsPackable>
99
<PackageProjectUrl>https://github.com/SimplifyNet/Simplify.ProjectsTemplates</PackageProjectUrl>
1010
<PackageIconUrl>https://raw.githubusercontent.com/SimplifyNet/Images/master/Logo.png</PackageIconUrl>
1111
<RepositoryUrl>https://github.com/SimplifyNet/Simplify.ProjectsTemplates</RepositoryUrl>
1212
<RepositoryType>GIT</RepositoryType>
1313
<PackageReleaseNotes>
14-
Updates
15-
Templates refactoring
14+
New
15+
* Windows service with database project template added
1616
</PackageReleaseNotes>
1717
<Title>Simplify project templates</Title>
1818
<Authors>Alexander Krylkov</Authors>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"$schema": "http://json.schemastore.org/template",
3+
"author": "Alexander Krylkov",
4+
"classifications": ["Scheduler",
5+
"Simplify"
6+
],
7+
"name": "Simplify.WindowsServices scheduler with database work based on windows service",
8+
"identity": "Simplify.Template.WindowsService",
9+
"shortName": "simplify.windowsservicewithdatabase",
10+
"tags":
11+
{
12+
"language": "C#",
13+
"type": "project"
14+
},
15+
"sourceName": "MyProjectWindowsServiceWithDatabase"
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using Microsoft.Extensions.Configuration;
2+
using NUnit.Framework;
3+
using Simplify.FluentNHibernate;
4+
5+
namespace MyProjectWindowsServiceWithDatabase.Database.IntegrationTests.Dangerous
6+
{
7+
[TestFixture]
8+
[Category("Integration")]
9+
public class SchemaUpdate
10+
{
11+
[Test]
12+
public void UpdateSchema()
13+
{
14+
var cfg = new ConfigurationBuilder()
15+
.AddJsonFile("appsettings.json", false)
16+
.Build();
17+
18+
new MyProjectWindowsServiceWithDatabaseSessionFactoryBuilder(cfg)
19+
.CreateConfiguration()
20+
.UpdateSchema(x => x.CreateIndexesForForeignKeys());
21+
}
22+
}
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFramework>netcoreapp3.1</TargetFramework>
4+
<LangVersion>9.0</LangVersion>
5+
6+
7+
<Product>MyProjectWindowsServiceWithDatabase</Product>
8+
<Description>MyProjectWindowsServiceWithDatabase.Database integration tests</Description>
9+
<Copyright>Copyright © 2021</Copyright>
10+
</PropertyGroup>
11+
<ItemGroup>
12+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.*" />
13+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.*" />
14+
<PackageReference Include="NUnit" Version="3.13.*" />
15+
<PackageReference Include="NUnit3TestAdapter" Version="3.17.*" />
16+
</ItemGroup>
17+
<ItemGroup>
18+
<ProjectReference Include="..\MyProjectWindowsServiceWithDatabase.Database\MyProjectWindowsServiceWithDatabase.Database.csproj" />
19+
</ItemGroup>
20+
</Project>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using MyProjectWindowsServiceWithDatabase.Database.MyEntities;
2+
using Simplify.Repository.FluentNHibernate.Mappings;
3+
4+
namespace MyProjectWindowsServiceWithDatabase.Database.Mappings
5+
{
6+
public class MyEntityMap : IdentityObjectMap<MyEntity>
7+
{
8+
}
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using MyProjectWindowsServiceWithDatabase.MyEntities;
2+
using Simplify.Repository.FluentNHibernate;
3+
4+
namespace MyProjectWindowsServiceWithDatabase.Database.MyEntities
5+
{
6+
public class MyEntity : IdentityObject, IMyEntity
7+
{
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFramework>netstandard2.0</TargetFramework>
4+
<LangVersion>9.0</LangVersion>
5+
6+
<Product>MyProjectWindowsServiceWithDatabase</Product>
7+
<Description>MyProjectWindowsServiceWithDatabase database implementation</Description>
8+
<Copyright>Copyright © 2021</Copyright>
9+
</PropertyGroup>
10+
<ItemGroup>
11+
<PackageReference Include="Simplify.DI" Version="4.0.*" />
12+
<PackageReference Include="Simplify.Repository.FluentNHibernate" Version="1.4.*" />
13+
<PackageReference Include="System.Data.SqlClient" Version="4.8.*" />
14+
</ItemGroup>
15+
<ItemGroup>
16+
<ProjectReference Include="..\MyProjectWindowsServiceWithDatabase\MyProjectWindowsServiceWithDatabase.csproj" />
17+
</ItemGroup>
18+
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using FluentNHibernate.Cfg;
2+
using FluentNHibernate.Conventions.Helpers;
3+
using Microsoft.Extensions.Configuration;
4+
using Simplify.FluentNHibernate;
5+
using Simplify.FluentNHibernate.Conventions;
6+
using Simplify.Repository.FluentNHibernate;
7+
8+
namespace MyProjectWindowsServiceWithDatabase.Database
9+
{
10+
public class MyProjectWindowsServiceWithDatabaseSessionFactoryBuilder : SessionFactoryBuilderBase
11+
{
12+
public MyProjectWindowsServiceWithDatabaseSessionFactoryBuilder(IConfiguration configuration) : base(configuration, "MyProjectWindowsServiceWithDatabaseDatabaseConnectionSettings")
13+
{
14+
}
15+
16+
public override FluentConfiguration CreateConfiguration() =>
17+
FluentConfiguration.InitializeFromConfigMsSql(Configuration, ConfigSectionName)
18+
.AddMappingsFromAssemblyOf<MyProjectWindowsServiceWithDatabaseSessionFactoryBuilder>(PrimaryKey.Name.Is(x => "ID"),
19+
Table.Is(x => x.EntityType.Name + "s"),
20+
ForeignKey.EndsWith("ID"),
21+
ForeignKeyConstraintNameConvention.WithConstraintNameConvention());
22+
}
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using NHibernate;
2+
using Simplify.Repository.FluentNHibernate;
3+
4+
namespace MyProjectWindowsServiceWithDatabase.Database
5+
{
6+
public class MyProjectWindowsServiceWithDatabaseUnitOfWork : TransactUnitOfWork, IMyProjectWindowsServiceWithDatabaseUnitOfWork
7+
{
8+
public MyProjectWindowsServiceWithDatabaseUnitOfWork(ISessionFactory sessionFactory) : base(sessionFactory)
9+
{
10+
}
11+
}
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using Microsoft.Extensions.Configuration;
2+
using MyProjectWindowsServiceWithDatabase.MyEntities;
3+
using Simplify.DI;
4+
using Simplify.Repository.FluentNHibernate;
5+
6+
namespace MyProjectWindowsServiceWithDatabase.Database.Setup
7+
{
8+
public static class SimplifyDIRegistratorExtensions
9+
{
10+
public static IDIRegistrator RegisterMyProjectWindowsServiceWithDatabase(this IDIRegistrator registrator) =>
11+
registrator.Register(
12+
r => (MyProjectWindowsServiceWithDatabaseSessionFactoryBuilder)new MyProjectWindowsServiceWithDatabaseSessionFactoryBuilder(
13+
r.Resolve<IConfiguration>()).Build(), LifetimeType.Singleton)
14+
.Register(r => new MyProjectWindowsServiceWithDatabaseUnitOfWork(r.Resolve<MyProjectWindowsServiceWithDatabaseSessionFactoryBuilder>()
15+
.Instance))
16+
.Register<IMyProjectWindowsServiceWithDatabaseUnitOfWork>(r => r.Resolve<MyProjectWindowsServiceWithDatabaseUnitOfWork>())
17+
.Register(r => r.Resolve<MyProjectWindowsServiceWithDatabaseUnitOfWork>().Session)
18+
19+
.RegisterTransactRepository<IMyEntity, IMyProjectWindowsServiceWithDatabaseUnitOfWork>()
20+
.Register<IMyEntityServiceService, MyEntityService>();
21+
}
22+
}

0 commit comments

Comments
 (0)