Datei: NDODLL/Application/BuilderExtensions.cs

Last Commit (273289e)
1 //
2 // Copyright (c) 2002-2024 Mirko Matytschak
3 // (www.netdataobjects.de)
4 //
5 // Author: Mirko Matytschak
6 //
7 // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
8 // documentation files (the "Software"), to deal in the Software without restriction, including without limitation
9 // the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
10 // Software, and to permit persons to whom the Software is furnished to do so, subject to the following
11 // conditions:
12
13 // The above copyright notice and this permission notice shall be included in all copies or substantial portions
14 // of the Software.
15 //
16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
17 // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
19 // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 // DEALINGS IN THE SOFTWARE.
21
22 using System;
23 using Microsoft.Extensions.Configuration;
24 using Microsoft.Extensions.DependencyInjection;
25 using Microsoft.Extensions.Hosting;
26 using NDO.ProviderFactory;
27 using NDO.Query;
28 using NDO.SqlPersistenceHandling;
29
30 namespace NDO.Application
31 {
32 ····/// <summary>
33 ····/// Startup extensions to integrate NDO into the Microsoft .NET application architecture
34 ····/// </summary>
35 ····public static class BuilderExtensions
36 ····{
37 ········/// <summary>
38 ········/// Call this method in your Startup class, so that NDO has a chance to register required services.
39 ········/// </summary>
40 ········/// <remarks>
41 ········/// <code>
42 ········/// public void ConfigureServices(IServiceCollection services)
43 ········/// {
44 ········///········...
45 ········///········services.AddNdo(_env,_config);
46 ········///········...
47 ········/// }
48 ········/// </code>
49 ········/// </remarks>
50 ········/// <param name="services"></param>
51 ········/// <param name="hostEnvironment"></param>
52 ········/// <param name="config"></param>
53 ········public static void AddNdo( this IServiceCollection services, IHostEnvironment hostEnvironment, IConfiguration config )
54 ········{
55 ············services.AddNdoProviderFactory( hostEnvironment, config );
56 ············NDOApplication.Configuration = config;
57 ············NDOApplication.HostEnvironment = hostEnvironment;
58 ············services.AddTransient<IPersistenceHandler, SqlPersistenceHandler>();
59 ············services.AddTransient<RelationContextGenerator>();
60 ············services.AddTransient<IQueryGenerator, SqlQueryGenerator>();
61 ············services.AddScoped<IPersistenceHandlerManager, NDOPersistenceHandlerManager>();
62 ············services.AddSingleton<IPersistenceHandlerPool, NDOPersistenceHandlerPool>();
63 ············services.AddScoped<IMappingsAccessor, MappingsAccessor>();
64 ············services.AddTransient<INDOTransactionScope, NDOTransactionScope>();
65 ············services.AddScoped<IPersistenceManagerAccessor, PersistenceManagerAccessor>();
66 ········}
67
68 ········/// <summary>
69 ········/// Call this method in your Startup class to give NDO the chance to use the IServiceProvider interface
70 ········/// </summary>
71 ········/// <remarks>
72 ········/// In the Startup class of a web project write
73 ········/// <code>
74 ········/// public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
75 ········/// {
76 ········///········...
77 ········///········app.ApplicationServices.UseNdo();
78 ········///········...
79 ········/// }
80 ········/// </code>
81 ········/// If you have an IHostBuilder interface use this code:
82 ········/// <code>
83 ········/// var builder = Host.CreateDefaultBuilder();
84 ········/// ...
85 ········/// builder.ConfigureServices( services =>
86 ········/// {
87 ········///········services.UseNdo();
88 ········/// } );
89 ········/// </code>
90 ········/// With CreateApplicationBuilder use this code
91 ········/// <code>
92 ········/// var builder = Host.CreateApplicationBuilder();
93 ········/// ...
94 ········/// var services = builder.Services;
95 ········/// services.UseNdo();
96 ········/// </code>
97 ········/// </remarks>
98 ········/// <param name="serviceProvider"></param>
99 ········/// <returns>The IServiceProvider instance, passed as parameter.</returns>
100 ········public static IServiceProvider UseNdo( this IServiceProvider serviceProvider )
101 ········{
 
102 ············serviceProvider.UseNdoProviderFactory();
 
103 ············NDOApplication.ServiceProvider = serviceProvider;
104 ············return serviceProvider;
105 ········}
106 ····}
107 }
108
New Commit (e4584c5)
1 //
2 // Copyright (c) 2002-2024 Mirko Matytschak
3 // (www.netdataobjects.de)
4 //
5 // Author: Mirko Matytschak
6 //
7 // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
8 // documentation files (the "Software"), to deal in the Software without restriction, including without limitation
9 // the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
10 // Software, and to permit persons to whom the Software is furnished to do so, subject to the following
11 // conditions:
12
13 // The above copyright notice and this permission notice shall be included in all copies or substantial portions
14 // of the Software.
15 //
16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
17 // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
19 // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 // DEALINGS IN THE SOFTWARE.
21
22 using System;
23 using Microsoft.Extensions.Configuration;
24 using Microsoft.Extensions.DependencyInjection;
25 using Microsoft.Extensions.Hosting;
26 using NDO.ProviderFactory;
27 using NDO.Query;
28 using NDO.SqlPersistenceHandling;
29
30 namespace NDO.Application
31 {
32 ····/// <summary>
33 ····/// Startup extensions to integrate NDO into the Microsoft .NET application architecture
34 ····/// </summary>
35 ····public static class BuilderExtensions
36 ····{
37 ········/// <summary>
38 ········/// Call this method in your Startup class, so that NDO has a chance to register required services.
39 ········/// </summary>
40 ········/// <remarks>
41 ········/// <code>
42 ········/// public void ConfigureServices(IServiceCollection services)
43 ········/// {
44 ········///········...
45 ········///········services.AddNdo(_env,_config);
46 ········///········...
47 ········/// }
48 ········/// </code>
49 ········/// </remarks>
50 ········/// <param name="services"></param>
51 ········/// <param name="hostEnvironment"></param>
52 ········/// <param name="config"></param>
53 ········public static void AddNdo( this IServiceCollection services, IHostEnvironment hostEnvironment, IConfiguration config )
54 ········{
55 ············services.AddNdoProviderFactory( hostEnvironment, config );
56 ············NDOApplication.Configuration = config;
57 ············NDOApplication.HostEnvironment = hostEnvironment;
58 ············services.AddTransient<IPersistenceHandler, SqlPersistenceHandler>();
59 ············services.AddTransient<RelationContextGenerator>();
60 ············services.AddTransient<IQueryGenerator, SqlQueryGenerator>();
61 ············services.AddScoped<IPersistenceHandlerManager, NDOPersistenceHandlerManager>();
62 ············services.AddSingleton<IPersistenceHandlerPool, NDOPersistenceHandlerPool>();
63 ············services.AddScoped<IMappingsAccessor, MappingsAccessor>();
64 ············services.AddTransient<INDOTransactionScope, NDOTransactionScope>();
65 ············services.AddScoped<IPersistenceManagerAccessor, PersistenceManagerAccessor>();
66 ········}
67
68 ········/// <summary>
69 ········/// Call this method in your Startup class to give NDO the chance to use the IServiceProvider interface
70 ········/// </summary>
71 ········/// <remarks>
72 ········/// In the Startup class of a web project write
73 ········/// <code>
74 ········/// public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
75 ········/// {
76 ········///········...
77 ········///········app.ApplicationServices.UseNdo();
78 ········///········...
79 ········/// }
80 ········/// </code>
81 ········/// If you have an IHostBuilder interface use this code:
82 ········/// <code>
83 ········/// var builder = Host.CreateDefaultBuilder();
84 ········/// ...
85 ········/// builder.ConfigureServices( services =>
86 ········/// {
87 ········///········services.UseNdo();
88 ········/// } );
89 ········/// </code>
90 ········/// With CreateApplicationBuilder use this code
91 ········/// <code>
92 ········/// var builder = Host.CreateApplicationBuilder();
93 ········/// ...
94 ········/// var services = builder.Services;
95 ········/// services.UseNdo();
96 ········/// </code>
97 ········/// </remarks>
98 ········/// <param name="serviceProvider"></param>
99 ········/// <returns>The IServiceProvider instance, passed as parameter.</returns>
100 ········public static IServiceProvider UseNdo( this IServiceProvider serviceProvider )
101 ········{
102 ············// Initializes the internal class NDOApplication of the ProviderFactory
103 ············serviceProvider.UseNdoProviderFactory();
104 ············// Initializes the internal class NDOApplication of NDO.dll.
105 ············NDOApplication.ServiceProvider = serviceProvider;
106 ············return serviceProvider;
107 ········}
108 ····}
109 }
110