- 修复 Oracle/Dameng 登陆名为数字时候的 pk 命名问题;

This commit is contained in:
28810 2020-04-08 13:31:40 +08:00
parent 0f3bad338f
commit 27d6c46758
9 changed files with 110 additions and 69 deletions

View File

@ -121,13 +121,6 @@
清空状态数据 清空状态数据
</summary> </summary>
</member> </member>
<member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary>
根据 lambda 条件删除数据
</summary>
<param name="predicate"></param>
<returns></returns>
</member>
<member name="M:FreeSql.DbSet`1.Add(`0)"> <member name="M:FreeSql.DbSet`1.Add(`0)">
<summary> <summary>
添加 添加
@ -222,15 +215,6 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
<summary>
批量注入 Repository可以参考代码自行调整
</summary>
<param name="services"></param>
<param name="globalDataFilter"></param>
<param name="assemblies"></param>
<returns></returns>
</member>
<member name="P:FreeSql.IBaseRepository.Orm"> <member name="P:FreeSql.IBaseRepository.Orm">
<summary> <summary>
注意IFreeSql 属于顶级对象,事务无法自动传递。<para></para> 注意IFreeSql 属于顶级对象,事务无法自动传递。<para></para>

View File

@ -27,55 +27,108 @@ namespace FreeSql.Tests.Odbc.Dameng
} }
[Fact] [Fact]
public void _字段() public void _字段()
{ {
var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<>(); var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<>();
g.dameng.CodeFirst.SyncStructure<>(); g.dameng.CodeFirst.SyncStructure<>();
var item = new var item = new
{ {
= "测试标题", = "测试标题",
= DateTime.Now = DateTime.Now
}; };
Assert.Equal(1, g.dameng.Insert<>().AppendData(item).ExecuteAffrows()); Assert.Equal(1, g.dameng.Insert<>().AppendData(item).ExecuteAffrows());
Assert.NotEqual(Guid.Empty, item.); Assert.NotEqual(Guid.Empty, item.);
var item2 = g.dameng.Select<>().Where(a => a. == item.).First(); var item2 = g.dameng.Select<>().Where(a => a. == item.).First();
Assert.NotNull(item2); Assert.NotNull(item2);
Assert.Equal(item., item2.); Assert.Equal(item., item2.);
Assert.Equal(item., item2.); Assert.Equal(item., item2.);
item. = "测试标题更新"; item. = "测试标题更新";
Assert.Equal(1, g.dameng.Update<>().SetSource(item).ExecuteAffrows()); Assert.Equal(1, g.dameng.Update<>().SetSource(item).ExecuteAffrows());
item2 = g.dameng.Select<>().Where(a => a. == item.).First(); item2 = g.dameng.Select<>().Where(a => a. == item.).First();
Assert.NotNull(item2); Assert.NotNull(item2);
Assert.Equal(item., item2.); Assert.Equal(item., item2.);
Assert.Equal(item., item2.); Assert.Equal(item., item2.);
item. = "测试标题更新_repo"; item. = "测试标题更新_repo";
var repo = g.dameng.GetRepository<>(); var repo = g.dameng.GetRepository<>();
Assert.Equal(1, repo.Update(item)); Assert.Equal(1, repo.Update(item));
item2 = g.dameng.Select<>().Where(a => a. == item.).First(); item2 = g.dameng.Select<>().Where(a => a. == item.).First();
Assert.NotNull(item2); Assert.NotNull(item2);
Assert.Equal(item., item2.); Assert.Equal(item., item2.);
Assert.Equal(item., item2.); Assert.Equal(item., item2.);
item. = "测试标题更新_repo22"; item. = "测试标题更新_repo22";
Assert.Equal(1, repo.Update(item)); Assert.Equal(1, repo.Update(item));
item2 = g.dameng.Select<>().Where(a => a. == item.).First(); item2 = g.dameng.Select<>().Where(a => a. == item.).First();
Assert.NotNull(item2); Assert.NotNull(item2);
Assert.Equal(item., item2.); Assert.Equal(item., item2.);
Assert.Equal(item., item2.); Assert.Equal(item., item2.);
} }
class [Table(Name = "123测试数字表")]
class
{ {
[Column(IsPrimary = true)] [Column(IsPrimary = true, Name = "123编号")]
public Guid { get; set; } public Guid { get; set; }
[Column(Name = "123标题")]
public string { get; set; } public string { get; set; }
[Column(Name = "123创建时间")]
public DateTime { get; set; } public DateTime { get; set; }
} }
//[Fact]
//public void 中文表_字段()
//{
// var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<测试中文表>();
// g.dameng.CodeFirst.SyncStructure<测试中文表>();
// var item = new 测试中文表
// {
// 标题 = "测试标题",
// 创建时间 = DateTime.Now
// };
// Assert.Equal(1, g.dameng.Insert<测试中文表>().AppendData(item).ExecuteAffrows());
// Assert.NotEqual(Guid.Empty, item.编号);
// var item2 = g.dameng.Select<测试中文表>().Where(a => a.编号 == item.编号).First();
// Assert.NotNull(item2);
// Assert.Equal(item.编号, item2.编号);
// Assert.Equal(item.标题, item2.标题);
// item.标题 = "测试标题更新";
// Assert.Equal(1, g.dameng.Update<测试中文表>().SetSource(item).ExecuteAffrows());
// item2 = g.dameng.Select<测试中文表>().Where(a => a.编号 == item.编号).First();
// Assert.NotNull(item2);
// Assert.Equal(item.编号, item2.编号);
// Assert.Equal(item.标题, item2.标题);
// item.标题 = "测试标题更新_repo";
// var repo = g.dameng.GetRepository<测试中文表>();
// Assert.Equal(1, repo.Update(item));
// item2 = g.dameng.Select<测试中文表>().Where(a => a.编号 == item.编号).First();
// Assert.NotNull(item2);
// Assert.Equal(item.编号, item2.编号);
// Assert.Equal(item.标题, item2.标题);
// item.标题 = "测试标题更新_repo22";
// Assert.Equal(1, repo.Update(item));
// item2 = g.dameng.Select<测试中文表>().Where(a => a.编号 == item.编号).First();
// Assert.NotNull(item2);
// Assert.Equal(item.编号, item2.编号);
// Assert.Equal(item.标题, item2.标题);
//}
//class 测试中文表
//{
// [Column(IsPrimary = true)]
// public Guid 编号 { get; set; }
// public string 标题 { get; set; }
// public DateTime 创建时间 { get; set; }
//}
[Fact] [Fact]
public void AddUniques() public void AddUniques()
{ {

View File

@ -70,8 +70,8 @@ public class g
public static IFreeSql odbc => odbcLazy.Value; public static IFreeSql odbc => odbcLazy.Value;
static Lazy<IFreeSql> damemgLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder() static Lazy<IFreeSql> damemgLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.OdbcDameng, "Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=USER1;PWD=123456789") .UseConnectionString(FreeSql.DataType.OdbcDameng, "Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=123USER1;PWD=123456789")
//.UseConnectionFactory(FreeSql.DataType.OdbcDameng, () => new System.Data.Odbc.OdbcConnection("Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=USER1;PWD=123456789")) //.UseConnectionFactory(FreeSql.DataType.OdbcDameng, () => new System.Data.Odbc.OdbcConnection("Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=123USER1;PWD=123456789"))
.UseAutoSyncStructure(true) .UseAutoSyncStructure(true)
.UseLazyLoading(true) .UseLazyLoading(true)
.UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper) .UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
@ -85,8 +85,8 @@ public class g
//启动南大通用数据库 oninit -vy //启动南大通用数据库 oninit -vy
static Lazy<IFreeSql> gbaseLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder() static Lazy<IFreeSql> gbaseLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.OdbcDameng, "Driver={GBase ODBC DRIVER (64-bit)};Server=192.168.164.10:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=USER1;PWD=123456789") .UseConnectionString(FreeSql.DataType.OdbcDameng, "Driver={GBase ODBC DRIVER (64-bit)};Server=192.168.164.10:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=123USER1;PWD=123456789")
//.UseConnectionFactory(FreeSql.DataType.OdbcDameng, () => new System.Data.Odbc.OdbcConnection("Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=USER1;PWD=123456789")) //.UseConnectionFactory(FreeSql.DataType.OdbcDameng, () => new System.Data.Odbc.OdbcConnection("Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=123USER1;PWD=123456789"))
.UseAutoSyncStructure(true) .UseAutoSyncStructure(true)
.UseLazyLoading(true) .UseLazyLoading(true)
.UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper) .UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)

View File

@ -55,8 +55,8 @@ public class g
public static IFreeSql sqlserver => sqlserverLazy.Value; public static IFreeSql sqlserver => sqlserverLazy.Value;
static Lazy<IFreeSql> oracleLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder() static Lazy<IFreeSql> oracleLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.Oracle, "user id=user1;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=2") .UseConnectionString(FreeSql.DataType.Oracle, "user id=123user1;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=2")
//.UseConnectionFactory(FreeSql.DataType.Oracle, () => new Oracle.ManagedDataAccess.Client.OracleConnection("user id=user1;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;")) //.UseConnectionFactory(FreeSql.DataType.Oracle, () => new Oracle.ManagedDataAccess.Client.OracleConnection("user id=123user1;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;"))
.UseAutoSyncStructure(true) .UseAutoSyncStructure(true)
//.UseGenerateCommandParameterWithLambda(true) //.UseGenerateCommandParameterWithLambda(true)
.UseLazyLoading(true) .UseLazyLoading(true)

View File

@ -139,7 +139,7 @@ namespace FreeSql.Odbc.Dameng
if (tb.Primarys.Any()) if (tb.Primarys.Any())
{ {
var pkname = primaryKeyName ?? $"{tbname[0]}_{tbname[1]}_pk1"; var pkname = primaryKeyName ?? $"{tbname[0]}_{tbname[1]}_pk1";
sb.Append(" \r\n CONSTRAINT ").Append(pkname).Append(" PRIMARY KEY ("); sb.Append(" \r\n CONSTRAINT ").Append(_commonUtils.QuoteSqlName(pkname)).Append(" PRIMARY KEY (");
foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", "); foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", ");
sb.Remove(sb.Length - 2, 2).Append("),"); sb.Remove(sb.Length - 2, 2).Append("),");
} }
@ -323,7 +323,7 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
if (tb.Primarys.Any()) if (tb.Primarys.Any())
{ {
var pkname = primaryKeyName ?? $"{tbname[0]}_{tbname[1]}_pk2"; var pkname = primaryKeyName ?? $"{tbname[0]}_{tbname[1]}_pk2";
sb.Append(" \r\n CONSTRAINT ").Append(pkname).Append(" PRIMARY KEY ("); sb.Append(" \r\n CONSTRAINT ").Append(_commonUtils.QuoteSqlName(pkname)).Append(" PRIMARY KEY (");
foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", "); foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", ");
sb.Remove(sb.Length - 2, 2).Append("),"); sb.Remove(sb.Length - 2, 2).Append("),");
} }
@ -384,12 +384,12 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
{ {
if (dicDeclare.ContainsKey(seqname) == false) if (dicDeclare.ContainsKey(seqname) == false)
{ {
sbDeclare.Append("\r\n").Append(seqname).Append("IS NUMBER; \r\n"); sbDeclare.Append("\r\nIS").Append(seqname).Append(" NUMBER; \r\n");
dicDeclare.Add(seqname, true); dicDeclare.Add(seqname, true);
} }
sb.Append(seqname).Append("IS := 0; \r\n") sb.Append("IS").Append(seqname).Append(" := 0; \r\n")
.Append(" select count(1) into ").Append(seqname).Append(_commonUtils.FormatSql("IS from user_sequences where sequence_name={0}; \r\n", seqname)) .Append(" select count(1) into IS").Append(seqname).Append(_commonUtils.FormatSql(" from user_sequences where sequence_name={0}; \r\n", seqname))
.Append("if ").Append(seqname).Append("IS > 0 then \r\n") .Append("if IS").Append(seqname).Append(" > 0 then \r\n")
.Append(" execute immediate 'DROP SEQUENCE ").Append(_commonUtils.QuoteSqlName(seqname)).Append("';\r\n") .Append(" execute immediate 'DROP SEQUENCE ").Append(_commonUtils.QuoteSqlName(seqname)).Append("';\r\n")
.Append("end if; \r\n"); .Append("end if; \r\n");
}; };
@ -397,12 +397,12 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
{ {
if (dicDeclare.ContainsKey(tiggerName) == false) if (dicDeclare.ContainsKey(tiggerName) == false)
{ {
sbDeclare.Append("\r\n").Append(tiggerName).Append("IS NUMBER; \r\n"); sbDeclare.Append("\r\nIS").Append(tiggerName).Append(" NUMBER; \r\n");
dicDeclare.Add(tiggerName, true); dicDeclare.Add(tiggerName, true);
} }
sb.Append(tiggerName).Append("IS := 0; \r\n") sb.Append("IS").Append(tiggerName).Append(" := 0; \r\n")
.Append(" select count(1) into ").Append(tiggerName).Append(_commonUtils.FormatSql("IS from user_triggers where trigger_name={0}; \r\n", tiggerName)) .Append(" select count(1) into IS").Append(tiggerName).Append(_commonUtils.FormatSql(" from user_triggers where trigger_name={0}; \r\n", tiggerName))
.Append("if ").Append(tiggerName).Append("IS > 0 then \r\n") .Append("if IS").Append(tiggerName).Append(" > 0 then \r\n")
.Append(" execute immediate 'DROP TRIGGER ").Append(_commonUtils.QuoteSqlName(tiggerName)).Append("';\r\n") .Append(" execute immediate 'DROP TRIGGER ").Append(_commonUtils.QuoteSqlName(tiggerName)).Append("';\r\n")
.Append("end if; \r\n"); .Append("end if; \r\n");
}; };

View File

@ -139,7 +139,7 @@ namespace FreeSql.Odbc.Oracle
if (tb.Primarys.Any()) if (tb.Primarys.Any())
{ {
var pkname = primaryKeyName ?? $"{tbname[0]}_{tbname[1]}_pk1"; var pkname = primaryKeyName ?? $"{tbname[0]}_{tbname[1]}_pk1";
sb.Append(" \r\n CONSTRAINT ").Append(pkname).Append(" PRIMARY KEY ("); sb.Append(" \r\n CONSTRAINT ").Append(_commonUtils.QuoteSqlName(pkname)).Append(" PRIMARY KEY (");
foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", "); foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", ");
sb.Remove(sb.Length - 2, 2).Append("),"); sb.Remove(sb.Length - 2, 2).Append("),");
} }
@ -321,7 +321,7 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
if (tb.Primarys.Any()) if (tb.Primarys.Any())
{ {
var pkname = primaryKeyName ?? $"{tbname[0]}_{tbname[1]}_pk2"; var pkname = primaryKeyName ?? $"{tbname[0]}_{tbname[1]}_pk2";
sb.Append(" \r\n CONSTRAINT ").Append(pkname).Append(" PRIMARY KEY ("); sb.Append(" \r\n CONSTRAINT ").Append(_commonUtils.QuoteSqlName(pkname)).Append(" PRIMARY KEY (");
foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", "); foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", ");
sb.Remove(sb.Length - 2, 2).Append("),"); sb.Remove(sb.Length - 2, 2).Append("),");
} }
@ -382,12 +382,12 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
{ {
if (dicDeclare.ContainsKey(seqname) == false) if (dicDeclare.ContainsKey(seqname) == false)
{ {
sbDeclare.Append("\r\n").Append(seqname).Append("IS NUMBER; \r\n"); sbDeclare.Append("\r\nIS").Append(seqname).Append(" NUMBER; \r\n");
dicDeclare.Add(seqname, true); dicDeclare.Add(seqname, true);
} }
sb.Append(seqname).Append("IS := 0; \r\n") sb.Append("IS").Append(seqname).Append(" := 0; \r\n")
.Append(" select count(1) into ").Append(seqname).Append(_commonUtils.FormatSql("IS from user_sequences where sequence_name={0}; \r\n", seqname)) .Append(" select count(1) into IS").Append(seqname).Append(_commonUtils.FormatSql(" from user_sequences where sequence_name={0}; \r\n", seqname))
.Append("if ").Append(seqname).Append("IS > 0 then \r\n") .Append("if IS").Append(seqname).Append(" > 0 then \r\n")
.Append(" execute immediate 'DROP SEQUENCE ").Append(_commonUtils.QuoteSqlName(seqname)).Append("';\r\n") .Append(" execute immediate 'DROP SEQUENCE ").Append(_commonUtils.QuoteSqlName(seqname)).Append("';\r\n")
.Append("end if; \r\n"); .Append("end if; \r\n");
}; };
@ -395,12 +395,12 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
{ {
if (dicDeclare.ContainsKey(tiggerName) == false) if (dicDeclare.ContainsKey(tiggerName) == false)
{ {
sbDeclare.Append("\r\n").Append(tiggerName).Append("IS NUMBER; \r\n"); sbDeclare.Append("\r\nIS").Append(tiggerName).Append(" NUMBER; \r\n");
dicDeclare.Add(tiggerName, true); dicDeclare.Add(tiggerName, true);
} }
sb.Append(tiggerName).Append("IS := 0; \r\n") sb.Append("IS").Append(tiggerName).Append(" := 0; \r\n")
.Append(" select count(1) into ").Append(tiggerName).Append(_commonUtils.FormatSql("IS from user_triggers where trigger_name={0}; \r\n", tiggerName)) .Append(" select count(1) into IS").Append(tiggerName).Append(_commonUtils.FormatSql(" from user_triggers where trigger_name={0}; \r\n", tiggerName))
.Append("if ").Append(tiggerName).Append("IS > 0 then \r\n") .Append("if IS").Append(tiggerName).Append(" > 0 then \r\n")
.Append(" execute immediate 'DROP TRIGGER ").Append(_commonUtils.QuoteSqlName(tiggerName)).Append("';\r\n") .Append(" execute immediate 'DROP TRIGGER ").Append(_commonUtils.QuoteSqlName(tiggerName)).Append("';\r\n")
.Append("end if; \r\n"); .Append("end if; \r\n");
}; };

View File

@ -132,7 +132,8 @@ namespace FreeSql.Odbc.PostgreSQL
} }
if (tb.Primarys.Any()) if (tb.Primarys.Any())
{ {
sb.Append(" \r\n CONSTRAINT ").Append(tbname[0]).Append("_").Append(tbname[1]).Append("_pkey PRIMARY KEY ("); var pkname = $"{tbname[0]}_{tbname[1]}_pkey";
sb.Append(" \r\n CONSTRAINT ").Append(_commonUtils.QuoteSqlName(pkname)).Append(" PRIMARY KEY (");
foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", "); foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", ");
sb.Remove(sb.Length - 2, 2).Append("),"); sb.Remove(sb.Length - 2, 2).Append("),");
} }
@ -329,7 +330,8 @@ where pg_namespace.nspname={0} and pg_class.relname={1} and pg_constraint.contyp
} }
if (tb.Primarys.Any()) if (tb.Primarys.Any())
{ {
sb.Append(" \r\n CONSTRAINT ").Append(tbname[0]).Append("_").Append(tbname[1]).Append("_pkey PRIMARY KEY ("); var pkname = $"{tbname[0]}_{tbname[1]}_pkey";
sb.Append(" \r\n CONSTRAINT ").Append(_commonUtils.QuoteSqlName(pkname)).Append(" PRIMARY KEY (");
foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", "); foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", ");
sb.Remove(sb.Length - 2, 2).Append("),"); sb.Remove(sb.Length - 2, 2).Append("),");
} }

View File

@ -140,7 +140,7 @@ namespace FreeSql.Oracle
if (tb.Primarys.Any()) if (tb.Primarys.Any())
{ {
var pkname = primaryKeyName ?? $"{tbname[0]}_{tbname[1]}_pk1"; var pkname = primaryKeyName ?? $"{tbname[0]}_{tbname[1]}_pk1";
sb.Append(" \r\n CONSTRAINT ").Append(pkname).Append(" PRIMARY KEY ("); sb.Append(" \r\n CONSTRAINT ").Append(_commonUtils.QuoteSqlName(pkname)).Append(" PRIMARY KEY (");
foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", "); foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", ");
sb.Remove(sb.Length - 2, 2).Append("),"); sb.Remove(sb.Length - 2, 2).Append("),");
} }
@ -322,7 +322,7 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
if (tb.Primarys.Any()) if (tb.Primarys.Any())
{ {
var pkname = primaryKeyName ?? $"{tbname[0]}_{tbname[1]}_pk2"; var pkname = primaryKeyName ?? $"{tbname[0]}_{tbname[1]}_pk2";
sb.Append(" \r\n CONSTRAINT ").Append(pkname).Append(" PRIMARY KEY ("); sb.Append(" \r\n CONSTRAINT ").Append(_commonUtils.QuoteSqlName(pkname)).Append(" PRIMARY KEY (");
foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", "); foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", ");
sb.Remove(sb.Length - 2, 2).Append("),"); sb.Remove(sb.Length - 2, 2).Append("),");
} }
@ -383,12 +383,12 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
{ {
if (dicDeclare.ContainsKey(seqname) == false) if (dicDeclare.ContainsKey(seqname) == false)
{ {
sbDeclare.Append("\r\n").Append(seqname).Append("IS NUMBER; \r\n"); sbDeclare.Append("\r\nIS").Append(seqname).Append(" NUMBER; \r\n");
dicDeclare.Add(seqname, true); dicDeclare.Add(seqname, true);
} }
sb.Append(seqname).Append("IS := 0; \r\n") sb.Append("IS").Append(seqname).Append(" := 0; \r\n")
.Append(" select count(1) into ").Append(seqname).Append(_commonUtils.FormatSql("IS from user_sequences where sequence_name={0}; \r\n", seqname)) .Append(" select count(1) into IS").Append(seqname).Append(_commonUtils.FormatSql(" from user_sequences where sequence_name={0}; \r\n", seqname))
.Append("if ").Append(seqname).Append("IS > 0 then \r\n") .Append("if IS").Append(seqname).Append(" > 0 then \r\n")
.Append(" execute immediate 'DROP SEQUENCE ").Append(_commonUtils.QuoteSqlName(seqname)).Append("';\r\n") .Append(" execute immediate 'DROP SEQUENCE ").Append(_commonUtils.QuoteSqlName(seqname)).Append("';\r\n")
.Append("end if; \r\n"); .Append("end if; \r\n");
}; };
@ -396,12 +396,12 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
{ {
if (dicDeclare.ContainsKey(tiggerName) == false) if (dicDeclare.ContainsKey(tiggerName) == false)
{ {
sbDeclare.Append("\r\n").Append(tiggerName).Append("IS NUMBER; \r\n"); sbDeclare.Append("\r\nIS").Append(tiggerName).Append(" NUMBER; \r\n");
dicDeclare.Add(tiggerName, true); dicDeclare.Add(tiggerName, true);
} }
sb.Append(tiggerName).Append("IS := 0; \r\n") sb.Append("IS").Append(tiggerName).Append(" := 0; \r\n")
.Append(" select count(1) into ").Append(tiggerName).Append(_commonUtils.FormatSql("IS from user_triggers where trigger_name={0}; \r\n", tiggerName)) .Append(" select count(1) into IS").Append(tiggerName).Append(_commonUtils.FormatSql(" from user_triggers where trigger_name={0}; \r\n", tiggerName))
.Append("if ").Append(tiggerName).Append("IS > 0 then \r\n") .Append("if IS").Append(tiggerName).Append(" > 0 then \r\n")
.Append(" execute immediate 'DROP TRIGGER ").Append(_commonUtils.QuoteSqlName(tiggerName)).Append("';\r\n") .Append(" execute immediate 'DROP TRIGGER ").Append(_commonUtils.QuoteSqlName(tiggerName)).Append("';\r\n")
.Append("end if; \r\n"); .Append("end if; \r\n");
}; };

View File

@ -167,7 +167,8 @@ namespace FreeSql.PostgreSQL
} }
if (tb.Primarys.Any()) if (tb.Primarys.Any())
{ {
sb.Append(" \r\n CONSTRAINT ").Append(tbname[0]).Append("_").Append(tbname[1]).Append("_pkey PRIMARY KEY ("); var pkname = $"{tbname[0]}_{tbname[1]}_pkey";
sb.Append(" \r\n CONSTRAINT ").Append(_commonUtils.QuoteSqlName(pkname)).Append(" PRIMARY KEY (");
foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", "); foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", ");
sb.Remove(sb.Length - 2, 2).Append("),"); sb.Remove(sb.Length - 2, 2).Append("),");
} }
@ -364,7 +365,8 @@ where pg_namespace.nspname={0} and pg_class.relname={1} and pg_constraint.contyp
} }
if (tb.Primarys.Any()) if (tb.Primarys.Any())
{ {
sb.Append(" \r\n CONSTRAINT ").Append(tbname[0]).Append("_").Append(tbname[1]).Append("_pkey PRIMARY KEY ("); var pkname = $"{tbname[0]}_{tbname[1]}_pkey";
sb.Append(" \r\n CONSTRAINT ").Append(_commonUtils.QuoteSqlName(pkname)).Append(" PRIMARY KEY (");
foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", "); foreach (var tbcol in tb.Primarys) sb.Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(", ");
sb.Remove(sb.Length - 2, 2).Append("),"); sb.Remove(sb.Length - 2, 2).Append("),");
} }