- 修复 CodeFirst 修改表名时重建索引的问题;

This commit is contained in:
2881099
2024-12-26 12:01:53 +08:00
parent 6ead0496ef
commit 657caedb54
19 changed files with 164 additions and 40 deletions

View File

@@ -443,7 +443,8 @@ where pg_namespace.nspname={0} and pg_class.relname={1} and pg_constraint.contyp
sb.Append("ALTER TABLE ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append(" DROP CONSTRAINT ").Append(oldpk).Append(";\r\n");
//创建临时表,数据导进临时表,然后删除原表,将临时表改名为原表名
var tablename = tboldname == null ? _commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}") : _commonUtils.QuoteSqlName($"{tboldname[0]}.{tboldname[1]}");
var newtablename = _commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}");
var tablename = tboldname == null ? newtablename : _commonUtils.QuoteSqlName($"{tboldname[0]}.{tboldname[1]}");
var tmptablename = _commonUtils.QuoteSqlName($"{tbname[0]}.FreeSqlTmp_{tbname[1]}");
//创建临时表
sb.Append("CREATE TABLE IF NOT EXISTS ").Append(tmptablename).Append(" ( ");
@@ -505,7 +506,7 @@ where pg_namespace.nspname={0} and pg_class.relname={1} and pg_constraint.contyp
if (uk.IsUnique) sb.Append("UNIQUE ");
sb.Append("INDEX ");
if (isPg95) sb.Append("IF NOT EXISTS ");
sb.Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename);
sb.Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(newtablename);
if (uk.IndexMethod != IndexMethod.B_Tree) sb.Append(" USING ").Append(uk.IndexMethod.ToString().ToUpper().Replace("_", ""));
sb.Append("(");
foreach (var tbcol in uk.Columns)
@@ -522,7 +523,7 @@ where pg_namespace.nspname={0} and pg_class.relname={1} and pg_constraint.contyp
{
if (tbcol.Attribute.IsIdentity)
{
var maxval = _orm.Ado.QuerySingle<int>($"select max({_commonUtils.QuoteSqlName(tbcol.Attribute.Name)}) from {tablename}");
var maxval = _orm.Ado.QuerySingle<int>($"select max({_commonUtils.QuoteSqlName(tbcol.Attribute.Name)}) from {newtablename}");
if (maxval > 0)
{
sb.Append("ALTER TABLE ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append(" ALTER COLUMN ").Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(" SET GENERATED BY DEFAULT");