From 76556be2b7e4ab81deb302bb94080cbf213651e5 Mon Sep 17 00:00:00 2001 From: anliuty Date: Mon, 20 Nov 2023 10:39:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8AppDbContextAttribute=E7=89=B9?= =?UTF-8?q?=E6=80=A7=E5=A2=9E=E5=8A=A0=E6=94=AF=E6=8C=81=E5=AF=B9=E8=A1=A8?= =?UTF-8?q?=E5=90=8D=E8=BF=9B=E8=A1=8C=E8=9B=87=E5=BD=A2=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Contexts/Attributes/AppDbContextAttribute.cs | 5 +++++ .../Contexts/Builders/AppDbContextBuilder.cs | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/framework/Furion/DatabaseAccessor/Contexts/Attributes/AppDbContextAttribute.cs b/framework/Furion/DatabaseAccessor/Contexts/Attributes/AppDbContextAttribute.cs index 16957f34a2..d63bad695d 100644 --- a/framework/Furion/DatabaseAccessor/Contexts/Attributes/AppDbContextAttribute.cs +++ b/framework/Furion/DatabaseAccessor/Contexts/Attributes/AppDbContextAttribute.cs @@ -85,4 +85,9 @@ public class AppDbContextAttribute : Attribute /// 指定从库定位器 /// public Type[] SlaveDbContextLocators { get; set; } + + /// + /// 表名使用蛇形命名 + /// + public bool UseSnakeCaseNaming { get; set; } } \ No newline at end of file diff --git a/framework/Furion/DatabaseAccessor/Contexts/Builders/AppDbContextBuilder.cs b/framework/Furion/DatabaseAccessor/Contexts/Builders/AppDbContextBuilder.cs index 700a33f484..031935dc59 100644 --- a/framework/Furion/DatabaseAccessor/Contexts/Builders/AppDbContextBuilder.cs +++ b/framework/Furion/DatabaseAccessor/Contexts/Builders/AppDbContextBuilder.cs @@ -18,6 +18,7 @@ using Microsoft.EntityFrameworkCore.Metadata.Builders; using System.Collections.Concurrent; using System.ComponentModel.DataAnnotations.Schema; using System.Reflection; +using System.Text.RegularExpressions; namespace Furion.DatabaseAccessor; @@ -179,6 +180,12 @@ internal static class AppDbContextBuilder var tablePrefix = (tableFixsAttribute?.Prefix ?? appDbContextAttribute?.TablePrefix)?.Trim(); var tableSuffix = (tableFixsAttribute?.Suffix ?? appDbContextAttribute?.TableSuffix)?.Trim(); + //表名使用蛇形命名 + if (appDbContextAttribute?.UseSnakeCaseNaming == true) + { + tableName = string.Join("_", Regex.Split(tableName, @"(?=\p{Lu}\p{Ll})|(?<=\p{Ll})(?=\p{Lu})").Where(u => u.Length > 0).ToArray()); + } + // 如果没有定义 Table 特性且没有定义 TableFixs 特性,且没有实现 IMultiTenantOnSchema 接口且 AppDbContextAttribute 没有配置前后缀 // 满足以上条件则不配置表名 if (!(tableAttribute == null && tableFixsAttribute == null && string.IsNullOrWhiteSpace(tablePrefix) && string.IsNullOrWhiteSpace(tableSuffix))) -- Gitee