diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/1270.cs b/FreeSql.Tests/FreeSql.Tests/Issues/1270.cs new file mode 100644 index 00000000..fb7a8088 --- /dev/null +++ b/FreeSql.Tests/FreeSql.Tests/Issues/1270.cs @@ -0,0 +1,119 @@ +using FreeSql.DataAnnotations; +using FreeSql.Internal; +using System.Diagnostics; +using Xunit; + +namespace FreeSql.Tests.Issues +{ + public class _1270 + { + [Fact] + public void UseNameConvert() + { + using (var fsql = new FreeSqlBuilder() + .UseConnectionString(DataType.Sqlite, "Data Source=:memory:") + .UseNameConvert(NameConvertType.None) + .UseAutoSyncStructure(true) + .Build()) + { + var ddl = fsql.CodeFirst.GetComparisonDDLStatements(); + Assert.Equal(@"CREATE TABLE IF NOT EXISTS ""main"".""SysUser"" ( + ""Id"" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + ""UserName"" NVARCHAR(255) +) +; +", ddl); + } + + using (var fsql = new FreeSqlBuilder() + .UseConnectionString(DataType.Sqlite, "Data Source=:memory:") + .UseNameConvert(NameConvertType.PascalCaseToUnderscore) + .UseAutoSyncStructure(true) + .Build()) + { + fsql.CodeFirst.ConfigEntity(a => { }); + var ddl = fsql.CodeFirst.GetComparisonDDLStatements(); + Assert.Equal(@"CREATE TABLE IF NOT EXISTS ""main"".""Sys_User"" ( + ""Id"" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + ""User_Name"" NVARCHAR(255) +) +; +", ddl); + } + + using (var fsql = new FreeSqlBuilder() + .UseConnectionString(DataType.Sqlite, "Data Source=:memory:") + .UseNameConvert(NameConvertType.PascalCaseToUnderscoreWithLower) + .UseAutoSyncStructure(true) + .Build()) + { + fsql.CodeFirst.ConfigEntity(a => { }); + var ddl = fsql.CodeFirst.GetComparisonDDLStatements(); + Assert.Equal(@"CREATE TABLE IF NOT EXISTS ""main"".""sys_user"" ( + ""id"" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + ""user_name"" NVARCHAR(255) +) +; +", ddl); + } + + using (var fsql = new FreeSqlBuilder() + .UseConnectionString(DataType.Sqlite, "Data Source=:memory:") + .UseNameConvert(NameConvertType.PascalCaseToUnderscoreWithUpper) + .UseAutoSyncStructure(true) + .Build()) + { + fsql.CodeFirst.ConfigEntity(a => { }); + var ddl = fsql.CodeFirst.GetComparisonDDLStatements(); + Assert.Equal(@"CREATE TABLE IF NOT EXISTS ""main"".""SYS_USER"" ( + ""ID"" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + ""USER_NAME"" NVARCHAR(255) +) +; +", ddl); + } + + using (var fsql = new FreeSqlBuilder() + .UseConnectionString(DataType.Sqlite, "Data Source=:memory:") + .UseNameConvert(NameConvertType.ToLower) + .UseAutoSyncStructure(true) + .Build()) + { + fsql.CodeFirst.ConfigEntity(a => { }); + var ddl = fsql.CodeFirst.GetComparisonDDLStatements(); + Assert.Equal(@"CREATE TABLE IF NOT EXISTS ""main"".""sysuser"" ( + ""id"" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + ""username"" NVARCHAR(255) +) +; +", ddl); + } + + using (var fsql = new FreeSqlBuilder() + .UseConnectionString(DataType.Sqlite, "Data Source=:memory:") + .UseNameConvert(NameConvertType.ToUpper) + .UseAutoSyncStructure(true) + .Build()) + { + fsql.CodeFirst.ConfigEntity(a => { }); + var ddl = fsql.CodeFirst.GetComparisonDDLStatements(); + Assert.Equal(@"CREATE TABLE IF NOT EXISTS ""main"".""SYSUSER"" ( + ""ID"" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + ""USERNAME"" NVARCHAR(255) +) +; +", ddl); + } + } + + public class SysUser + { + [Column(IsPrimary = true, IsIdentity = true)] + public int Id { get; set; } + + public string UserName { get; set; } + } + + } + +} diff --git a/FreeSql/Internal/CommonUtils.cs b/FreeSql/Internal/CommonUtils.cs index 0f42d02e..8ad03191 100644 --- a/FreeSql/Internal/CommonUtils.cs +++ b/FreeSql/Internal/CommonUtils.cs @@ -128,7 +128,7 @@ namespace FreeSql.Internal { ModifyResult = new TableAttribute { - Name = attr.Name, + Name = attr.Name ?? type.Name, OldName = attr.OldName, _DisableSyncStructure = attr._DisableSyncStructure, AsTable = attr.AsTable @@ -136,7 +136,7 @@ namespace FreeSql.Internal }; _orm.Aop.ConfigEntityHandler(_orm, aope); var tryattr = aope.ModifyResult; - if (!string.IsNullOrEmpty(tryattr.Name)) attr.Name = tryattr.Name; + if (!string.IsNullOrEmpty(tryattr.Name) && tryattr.Name != type.Name) attr.Name = tryattr.Name; if (!string.IsNullOrEmpty(tryattr.OldName)) attr.OldName = tryattr.OldName; if (tryattr._DisableSyncStructure != null) attr._DisableSyncStructure = tryattr.DisableSyncStructure; if (!string.IsNullOrEmpty(tryattr.AsTable)) attr.AsTable = tryattr.AsTable; @@ -194,7 +194,7 @@ namespace FreeSql.Internal { ModifyResult = new ColumnAttribute { - Name = attr.Name, + Name = attr.Name ?? proto.Name, OldName = attr.OldName, DbType = attr.DbType, _IsPrimary = attr._IsPrimary, @@ -217,7 +217,7 @@ namespace FreeSql.Internal }; _orm.Aop.ConfigEntityPropertyHandler(_orm, aope); var tryattr = aope.ModifyResult; - if (!string.IsNullOrEmpty(tryattr.Name)) attr.Name = tryattr.Name; + if (!string.IsNullOrEmpty(tryattr.Name) && tryattr.Name != proto.Name) attr.Name = tryattr.Name; if (!string.IsNullOrEmpty(tryattr.OldName)) attr.OldName = tryattr.OldName; if (!string.IsNullOrEmpty(tryattr.DbType)) attr.DbType = tryattr.DbType; if (tryattr._IsPrimary != null) attr._IsPrimary = tryattr.IsPrimary;