diff --git a/src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs b/src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs index d8067b8..f321013 100644 --- a/src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs +++ b/src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs @@ -490,8 +490,8 @@ public class PeisDbContext : #endregion - - + //将驼峰名改成小写+下划线形式,比如AsbitemDetails改成asbitem_details + builder.ToSnakeCase(); #region 测试 builder.Entity(entity => diff --git a/src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/SnakeToCamelCase.cs b/src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/SnakeToCamelCase.cs index 6885232..489abdf 100644 --- a/src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/SnakeToCamelCase.cs +++ b/src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/SnakeToCamelCase.cs @@ -10,68 +10,68 @@ namespace Shentun.Peis.EntityFrameworkCore { public static class SnakeToCamelCase { - //[Flags] - //public enum ConvertOptions - //{ - // All = 2 << 0, - // Tables = 2 << 1, - // Properties = 2 << 2, - // Keys = 2 << 3, - // ForeignKeys = 2 << 4, - // Indexes = 2 << 5, - //}; - //private static Regex leadingUndescoreRegex = new Regex(@"^_", RegexOptions.Compiled); - //private static Regex camelCaseRegex = new Regex(@"([a-z0-9])([A-Z])", RegexOptions.Compiled); + [Flags] + public enum ConvertOptions + { + All = 2 << 0, + Tables = 2 << 1, + Properties = 2 << 2, + Keys = 2 << 3, + ForeignKeys = 2 << 4, + Indexes = 2 << 5, + }; + private static Regex leadingUndescoreRegex = new Regex(@"^_", RegexOptions.Compiled); + private static Regex camelCaseRegex = new Regex(@"([a-z0-9])([A-Z])", RegexOptions.Compiled); - //public static string ToSnakeCase(this string input) - //{ - // if (string.IsNullOrEmpty(input)) { return input; } + public static string ToSnakeCase(this string input) + { + if (string.IsNullOrEmpty(input)) { return input; } - // var noLeadingUndescore = leadingUndescoreRegex.Replace(input, ""); - // return camelCaseRegex.Replace(noLeadingUndescore, "$1_$2").ToLower(); - //} + var noLeadingUndescore = leadingUndescoreRegex.Replace(input, ""); + return camelCaseRegex.Replace(noLeadingUndescore, "$1_$2").ToLower(); + } - //public static void ToSnakeCase(this ModelBuilder modelBuilder, ConvertOptions options = ConvertOptions.All) - //{ - // bool convertAll = (options & ConvertOptions.All) == ConvertOptions.All; - // bool convertTables = (options & ConvertOptions.Tables) == ConvertOptions.Tables; - // bool convertProperties = (options & ConvertOptions.Properties) == ConvertOptions.Properties; - // bool convertKeys = (options & ConvertOptions.Keys) == ConvertOptions.Keys; - // bool convertForeignKeys = (options & ConvertOptions.ForeignKeys) == ConvertOptions.ForeignKeys; - // bool convertIndexes = (options & ConvertOptions.Indexes) == ConvertOptions.Indexes; + public static void ToSnakeCase(this ModelBuilder modelBuilder, ConvertOptions options = ConvertOptions.All) + { + bool convertAll = (options & ConvertOptions.All) == ConvertOptions.All; + bool convertTables = (options & ConvertOptions.Tables) == ConvertOptions.Tables; + bool convertProperties = (options & ConvertOptions.Properties) == ConvertOptions.Properties; + bool convertKeys = (options & ConvertOptions.Keys) == ConvertOptions.Keys; + bool convertForeignKeys = (options & ConvertOptions.ForeignKeys) == ConvertOptions.ForeignKeys; + bool convertIndexes = (options & ConvertOptions.Indexes) == ConvertOptions.Indexes; - // foreach (var entity in modelBuilder.Model.GetEntityTypes()) - // { - // if (convertAll || convertTables) - // if (entity.BaseType == null) - // entity.SetTableName(entity.GetTableName().ToSnakeCase()); + foreach (var entity in modelBuilder.Model.GetEntityTypes()) + { + if (convertAll || convertTables) + if (entity.BaseType == null) + entity.SetTableName(entity.GetTableName().ToSnakeCase()); - // if (convertAll || convertProperties) - // foreach (var property in entity.GetProperties()) - // { - // property.SetColumnName(property.GetDefaultColumnName() .GetColumnName().ToSnakeCase()); - // } + if (convertAll || convertProperties) + foreach (var property in entity.GetProperties()) + { + property.SetColumnName(property.GetColumnName().ToSnakeCase()); + } - // if (convertAll || convertKeys) - // foreach (var key in entity.GetKeys()) - // { - // key.SetName(key.GetName().ToSnakeCase()); - // } + if (convertAll || convertKeys) + foreach (var key in entity.GetKeys()) + { + key.SetName(key.GetName().ToSnakeCase()); + } - // if (convertAll || convertForeignKeys) - // foreach (var key in entity.GetForeignKeys()) - // { - // key.SetConstraintName(key.GetConstraintName().ToSnakeCase()); - // } + if (convertAll || convertForeignKeys) + foreach (var key in entity.GetForeignKeys()) + { + key.SetConstraintName(key.GetConstraintName().ToSnakeCase()); + } - // if (convertAll || convertIndexes) - // foreach (var index in entity.GetIndexes()) - // { + if (convertAll || convertIndexes) + foreach (var index in entity.GetIndexes()) + { - // //index.SetName(index.GetName().ToSnakeCase()); - // } - // } - //} + //index.SetName(index.GetName().ToSnakeCase()); + } + } + } } }