mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 修复 CodeFirst + AsTable + 自动迁移,导致索性名重复的问题 #366;
This commit is contained in:
		@@ -150,7 +150,7 @@ namespace FreeSql.Odbc.Dameng
 | 
			
		||||
                        {
 | 
			
		||||
                            sb.Append("execute immediate 'CREATE ");
 | 
			
		||||
                            if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
			
		||||
                            sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
 | 
			
		||||
                            sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(createTableName).Append("(");
 | 
			
		||||
                            foreach (var tbcol in uk.Columns)
 | 
			
		||||
                            {
 | 
			
		||||
                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
			
		||||
@@ -283,13 +283,14 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
 | 
			
		||||
                    foreach (var uk in tb.Indexes)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
			
		||||
                        var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
 | 
			
		||||
                        var ukname = ReplaceIndexName(uk.Name, tbname[1]);
 | 
			
		||||
                        var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
 | 
			
		||||
                        if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (dsukfind1.Any()) sbalter.Append("execute immediate 'DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append("';\r\n");
 | 
			
		||||
                            if (dsukfind1.Any()) sbalter.Append("execute immediate 'DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append("';\r\n");
 | 
			
		||||
                            sbalter.Append("execute immediate 'CREATE ");
 | 
			
		||||
                            if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
			
		||||
                            sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
 | 
			
		||||
                            sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
 | 
			
		||||
                            foreach (var tbcol in uk.Columns)
 | 
			
		||||
                            {
 | 
			
		||||
                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
			
		||||
@@ -374,7 +375,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(uk.Name)).Append(" ON ").Append(tablename).Append("(");
 | 
			
		||||
                    sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
 | 
			
		||||
                    foreach (var tbcol in uk.Columns)
 | 
			
		||||
                    {
 | 
			
		||||
                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user