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 |