- 修复 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

@@ -316,7 +316,8 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
//执行失败(语句1) 试图删除聚集主键
//创建临时表,数据导进临时表,然后删除原表,将临时表改名为原表名
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]}.FTmp_{tbname[1]}");
//创建临时表
sb.Append("execute immediate 'CREATE TABLE ").Append(tmptablename).Append(" ( ");
@@ -386,7 +387,7 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
{
sb.Append("execute immediate 'CREATE ");
if (uk.IsUnique) sb.Append("UNIQUE ");
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(newtablename).Append("(");
foreach (var tbcol in uk.Columns)
{
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));