add sqlserver and postgresql support

This commit is contained in:
JawerZeng 2023-01-28 15:56:07 +08:00
parent 8a93c9486e
commit 56a8036696
3 changed files with 32 additions and 14 deletions

View file

@ -52,23 +52,35 @@ namespace ModernWMS.Core.Extentions
});
var Mysql_connection = configuration.GetConnectionString("MySqlConn");
var SqlLite_connection = configuration.GetConnectionString("SqlLiteConn");
var SqlServer_connection = configuration.GetConnectionString("SqlServerConn");
var Postgre_connection = configuration.GetConnectionString("PostGresConn");
var database_config = configuration.GetSection("Database")["db"];
services.AddDbContextPool<SqlDBContext>(t =>
{
if(database_config == "SqlLite")
if (database_config == "SqlLite")
{
t.UseSqlite(SqlLite_connection, b => b.MigrationsAssembly("ModernWMS"));
}
else
{
t.UseMySql(Mysql_connection, new MySqlServerVersion(new Version(8, 0, 26)));
}
else if (database_config == "MySql")
{
t.UseMySql(Mysql_connection, new MySqlServerVersion(new Version(8, 0, 26)));
}
else if(database_config == "SqlServer")
{
t.UseSqlServer(SqlServer_connection);
}
else if(database_config == "PostGres")
{
t.UseNpgsql(Postgre_connection);
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);
}
t.EnableSensitiveDataLogging();
t.UseLoggerFactory(new LoggerFactory(new[] { new DebugLoggerProvider() }));
}, 100); ;
services.AddMemoryCache( );
services.AddScoped<MultiTenancy.ITenantProvider, MultiTenancy.TenantProvider>();
services.AddMemoryCache();
services.AddScoped<MultiTenancy.ITenantProvider, MultiTenancy.TenantProvider>();
services.AddSwaggerService(configuration, AppContext.BaseDirectory);
services.AddTokenGeneratorService(configuration);
services.RegisterAssembly();
@ -87,7 +99,8 @@ namespace ModernWMS.Core.Extentions
options.SerializerSettings.Converters.Add(new JsonStringTrimConverter());
options.SerializerSettings.Formatting = Formatting.Indented;
options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
}).AddDataAnnotationsLocalization(options => {
}).AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
factory.Create(typeof(ModernWMS.Core.MultiLanguage));
}); ;
@ -106,7 +119,7 @@ namespace ModernWMS.Core.Extentions
app.UseTokenGeneratorConfigure(configuration);
app.UseAuthorization();
app.UseMiddleware<GlobalExceptionMiddleware>();
var support_languages = new[] { "zh-cn", "en-us" };
var support_languages = new[] { "zh-cn", "en-us" };
var localization_options = new RequestLocalizationOptions()
.SetDefaultCulture(support_languages[0])
.AddSupportedCultures(support_languages)
@ -229,7 +242,7 @@ namespace ModernWMS.Core.Extentions
{
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = nameof(ApiResponseHandler);
options.DefaultChallengeScheme = nameof(ApiResponseHandler);
options.DefaultForbidScheme = nameof(ApiResponseHandler);
}
)

View file

@ -23,12 +23,14 @@
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.1" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@ -39,6 +41,7 @@
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
<PackageReference Include="Microsoft.OpenApi" Version="1.4.5" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.1" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="7.0.0-silver.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.6" />

View file

@ -6,10 +6,12 @@
}
},
"AllowedHosts": "*",
"Database": { "db": "MySql" },
"Database": { "db": "SqlLite" },
"ConnectionStrings": {
"MySqlConn": "Server=127.0.0.1;Database=wms;Port=3306;charset=utf8;uid=root;pwd=123456789a?;",
"SqlLiteConn": "Data Source = wms.db"
"MySqlConn": "Server=127.0.0.1;Database=wms;Port=3306;charset=utf8;uid=root;pwd=123456;",
"SqlServerConn": "Data Source= 127.0.0.1; Connect Timeout=600;User ID= sa;Password= 123456; Initial Catalog= wms;Encrypt=False;",
"SqlLiteConn": "Data Source = wms.db",
"PostGresConn": "Server=192.168.103.34;Port=5432;User Id=postgres;Password=123456;Database=wms;"
},
"SwaggerSettings": {
"Name": "ModernWMS",