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:
		@@ -238,6 +238,7 @@ namespace FreeSql.Tests.MySqlConnector
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.mysql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.mysql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.mysql.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.mysql.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            g.mysql.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
					        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("uk_phone", "phone", true)]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -134,11 +134,12 @@ namespace FreeSql.Tests.Odbc.Dameng
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.dameng.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.dameng.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            g.dameng.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInf1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
					        [Table(Name = "AddUniquesInf", OldName = "AddUniquesInfo2")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("{tablename}_uk_phone", "phone", true)]
 | 
				
			||||||
        [Index("uk_group_index", "group,index", true)]
 | 
					        [Index("{tablename}_uk_group_index", "group,index", true)]
 | 
				
			||||||
        [Index("uk_group_index22", "group, index22", true)]
 | 
					        [Index("{tablename}_uk_group_index22", "group, index22", true)]
 | 
				
			||||||
        class AddUniquesInfo
 | 
					        class AddUniquesInfo
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            public Guid id { get; set; }
 | 
					            public Guid id { get; set; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -134,11 +134,12 @@ namespace FreeSql.Tests.Odbc.KingbaseES
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.kingbaseES.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.kingbaseES.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.kingbaseES.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.kingbaseES.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            g.kingbaseES.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
					        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("{tablename}_uk_phone", "phone", true)]
 | 
				
			||||||
        [Index("uk_group_index", "group,index", true)]
 | 
					        [Index("{tablename}_uk_group_index", "group,index", true)]
 | 
				
			||||||
        [Index("uk_group_index22", "group, index22", true)]
 | 
					        [Index("{tablename}_uk_group_index22", "group, index22", true)]
 | 
				
			||||||
        class AddUniquesInfo
 | 
					        class AddUniquesInfo
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            public Guid id { get; set; }
 | 
					            public Guid id { get; set; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -109,6 +109,7 @@ namespace FreeSql.Tests.Odbc.MySql
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.mysql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.mysql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.mysql.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.mysql.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            g.mysql.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
					        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("uk_phone", "phone", true)]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,11 +85,12 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.pgsql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.pgsql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.pgsql.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.pgsql.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            g.pgsql.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
					        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("{tablename}_uk_phone", "phone", true)]
 | 
				
			||||||
        [Index("uk_group_index", "group,index", true)]
 | 
					        [Index("{tablename}_uk_group_index", "group,index", true)]
 | 
				
			||||||
        [Index("uk_group_index22", "group, index22", true)]
 | 
					        [Index("{tablename}_uk_group_index22", "group, index22", true)]
 | 
				
			||||||
        class AddUniquesInfo
 | 
					        class AddUniquesInfo
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            public Guid id { get; set; }
 | 
					            public Guid id { get; set; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -118,6 +118,7 @@ namespace FreeSql.Tests.Odbc.SqlServer
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.sqlserver.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.sqlserver.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            g.sqlserver.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
					        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("uk_phone", "phone", true)]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -204,11 +204,12 @@ namespace FreeSql.Tests.Dameng
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.dameng.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.dameng.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            g.dameng.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInf1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
					        [Table(Name = "AddUniquesInf", OldName = "AddUniquesInfo2")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("{tablename}_uk_phone", "phone", true)]
 | 
				
			||||||
        [Index("uk_group_index", "group,index", true)]
 | 
					        [Index("{tablename}_uk_group_index", "group,index", true)]
 | 
				
			||||||
        [Index("uk_group_index22", "group, index22", true)]
 | 
					        [Index("{tablename}_uk_group_index22", "group, index22", true)]
 | 
				
			||||||
        class AddUniquesInfo
 | 
					        class AddUniquesInfo
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            public Guid id { get; set; }
 | 
					            public Guid id { get; set; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -237,6 +237,7 @@ namespace FreeSql.Tests.MySql
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.mysql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.mysql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.mysql.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.mysql.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            g.mysql.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
					        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("uk_phone", "phone", true)]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -234,6 +234,7 @@ namespace FreeSql.Tests.Oracle
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.oracle.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.oracle.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.oracle.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.oracle.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            //g.oracle.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
					        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("uk_phone", "phone", true)]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -125,11 +125,12 @@ namespace FreeSql.Tests.PostgreSQL
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.pgsql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.pgsql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.pgsql.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.pgsql.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            g.pgsql.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
					        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("{tablename}_uk_phone", "phone", true)]
 | 
				
			||||||
        [Index("uk_group_index", "group,index", true)]
 | 
					        [Index("{tablename}_uk_group_index", "group,index", true)]
 | 
				
			||||||
        [Index("uk_group_index22", "group, index22", false)]
 | 
					        [Index("{tablename}_uk_group_index22", "group, index22", false)]
 | 
				
			||||||
        class AddUniquesInfo
 | 
					        class AddUniquesInfo
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            public Guid id { get; set; }
 | 
					            public Guid id { get; set; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -90,11 +90,12 @@ namespace FreeSql.Tests.ShenTong
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.shentong.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.shentong.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.shentong.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.shentong.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            g.shentong.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
					        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("{tablename}_uk_phone", "phone", true)]
 | 
				
			||||||
        [Index("uk_group_index", "group,index", true)]
 | 
					        [Index("{tablename}_uk_group_index", "group,index", true)]
 | 
				
			||||||
        [Index("uk_group_index22", "group, index22", false)]
 | 
					        [Index("{tablename}_uk_group_index22", "group, index22", false)]
 | 
				
			||||||
        class AddUniquesInfo
 | 
					        class AddUniquesInfo
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            public Guid id { get; set; }
 | 
					            public Guid id { get; set; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -154,6 +154,7 @@ namespace FreeSql.Tests.SqlServer
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.sqlserver.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.sqlserver.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            g.sqlserver.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
					        [Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("uk_phone", "phone", true)]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -146,11 +146,12 @@ namespace FreeSql.Tests.Sqlite
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = g.sqlite.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
					            var sql = g.sqlite.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
 | 
				
			||||||
            g.sqlite.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
					            g.sqlite.CodeFirst.SyncStructure<AddUniquesInfo>();
 | 
				
			||||||
 | 
					            g.sqlite.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        [Table(Name = "AddUniquesInfo2", OldName = "AddUniquesInfo")]
 | 
					        [Table(Name = "AddUniquesInfo2", OldName = "AddUniquesInfo")]
 | 
				
			||||||
        [Index("uk_phone", "phone", true)]
 | 
					        [Index("{tablename}_uk_phone", "phone", true)]
 | 
				
			||||||
        [Index("uk_group_index", "group,index", true)]
 | 
					        [Index("{tablename}_uk_group_index", "group,index", true)]
 | 
				
			||||||
        [Index("uk_group_index22", "group desc, index22", true)]
 | 
					        [Index("{tablename}_uk_group_index22", "group desc, index22", true)]
 | 
				
			||||||
        class AddUniquesInfo
 | 
					        class AddUniquesInfo
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            public Guid id { get; set; }
 | 
					            public Guid id { get; set; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,14 +4,28 @@ using System.Text;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace FreeSql.DataAnnotations
 | 
					namespace FreeSql.DataAnnotations
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// 索引设置,如:[Index("{tablename}_idx_01", "name")]
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
    [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
 | 
					    [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
 | 
				
			||||||
    public class IndexAttribute : Attribute
 | 
					    public class IndexAttribute : Attribute
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 索引设置,如:[Index("{tablename}_idx_01", "name")]
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="name">索引名<para></para>v1.7.0 增加占位符 {TableName} 表名区分索引名 (解决 AsTable 分表 CodeFirst 导致索引名重复的问题)</param>
 | 
				
			||||||
 | 
					        /// <param name="fields">索引字段,为属性名以逗号分隔,如:Create_time ASC, Title ASC</param>
 | 
				
			||||||
        public IndexAttribute(string name, string fields)
 | 
					        public IndexAttribute(string name, string fields)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            this.Name = name;
 | 
					            this.Name = name;
 | 
				
			||||||
            this.Fields = fields;
 | 
					            this.Fields = fields;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 索引设置,如:[Index("{tablename}_idx_01", "name", true)]
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="name">索引名<para></para>v1.7.0 增加占位符 {TableName} 表名区分索引名 (解决 AsTable 分表 CodeFirst 导致索引名重复的问题)</param>
 | 
				
			||||||
 | 
					        /// <param name="fields">索引字段,为属性名以逗号分隔,如:Create_time ASC, Title ASC</param>
 | 
				
			||||||
 | 
					        /// <param name="isUnique">是否唯一</param>
 | 
				
			||||||
        public IndexAttribute(string name, string fields, bool isUnique)
 | 
					        public IndexAttribute(string name, string fields, bool isUnique)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            this.Name = name;
 | 
					            this.Name = name;
 | 
				
			||||||
@@ -19,7 +33,8 @@ namespace FreeSql.DataAnnotations
 | 
				
			|||||||
            this.IsUnique = isUnique;
 | 
					            this.IsUnique = isUnique;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// 索引名
 | 
					        /// 索引名<para></para>
 | 
				
			||||||
 | 
					        /// v1.7.0 增加占位符 {TableName} 表名区分索引名 (解决 AsTable 分表 CodeFirst 导致索引名重复的问题)
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        public string Name { get; set; }
 | 
					        public string Name { get; set; }
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -274,9 +274,30 @@
 | 
				
			|||||||
            <param name="exp"></param>
 | 
					            <param name="exp"></param>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="T:FreeSql.DataAnnotations.IndexAttribute">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            索引设置,如:[Index("{tablename}_idx_01", "name")]
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.DataAnnotations.IndexAttribute.#ctor(System.String,System.String)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            索引设置,如:[Index("{tablename}_idx_01", "name")]
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="name">索引名<para></para>v1.7.0 增加占位符 {TableName} 表名区分索引名 (解决 AsTable 分表 CodeFirst 导致索引名重复的问题)</param>
 | 
				
			||||||
 | 
					            <param name="fields">索引字段,为属性名以逗号分隔,如:Create_time ASC, Title ASC</param>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.DataAnnotations.IndexAttribute.#ctor(System.String,System.String,System.Boolean)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            索引设置,如:[Index("{tablename}_idx_01", "name", true)]
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="name">索引名<para></para>v1.7.0 增加占位符 {TableName} 表名区分索引名 (解决 AsTable 分表 CodeFirst 导致索引名重复的问题)</param>
 | 
				
			||||||
 | 
					            <param name="fields">索引字段,为属性名以逗号分隔,如:Create_time ASC, Title ASC</param>
 | 
				
			||||||
 | 
					            <param name="isUnique">是否唯一</param>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
        <member name="P:FreeSql.DataAnnotations.IndexAttribute.Name">
 | 
					        <member name="P:FreeSql.DataAnnotations.IndexAttribute.Name">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            索引名
 | 
					            索引名<para></para>
 | 
				
			||||||
 | 
					            v1.7.0 增加占位符 {TableName} 表名区分索引名 (解决 AsTable 分表 CodeFirst 导致索引名重复的问题)
 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="P:FreeSql.DataAnnotations.IndexAttribute.Fields">
 | 
					        <member name="P:FreeSql.DataAnnotations.IndexAttribute.Fields">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,6 +9,7 @@ using System.Data.Common;
 | 
				
			|||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Linq.Expressions;
 | 
					using System.Linq.Expressions;
 | 
				
			||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Text.RegularExpressions;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FreeSql.Internal.CommonProvider
 | 
					namespace FreeSql.Internal.CommonProvider
 | 
				
			||||||
@@ -124,5 +125,7 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public virtual int ExecuteDDLStatements(string ddl) => _orm.Ado.ExecuteNonQuery(CommandType.Text, ddl);
 | 
					        public virtual int ExecuteDDLStatements(string ddl) => _orm.Ado.ExecuteNonQuery(CommandType.Text, ddl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static string ReplaceIndexName(string indexName, string tbname) => string.IsNullOrEmpty(indexName) ? indexName : Regex.Replace(indexName, @"\{\s*TableName\s*\}", tbname, RegexOptions.IgnoreCase);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -149,7 +149,7 @@ namespace FreeSql.Dameng
 | 
				
			|||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append("execute immediate 'CREATE ");
 | 
					                            sb.Append("execute immediate 'CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -282,13 +282,14 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
 | 
				
			|||||||
                    foreach (var uk in tb.Indexes)
 | 
					                    foreach (var uk in tb.Indexes)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                        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() == 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 ");
 | 
					                            sbalter.Append("execute immediate 'CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -373,7 +374,7 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    sb.Append("execute immediate 'CREATE ");
 | 
					                    sb.Append("execute immediate 'CREATE ");
 | 
				
			||||||
                    if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                    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)
 | 
					                    foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -139,13 +139,14 @@ namespace FreeSql.MsAccess
 | 
				
			|||||||
                };
 | 
					                };
 | 
				
			||||||
                Action<string> createTableIndex = tn =>
 | 
					                Action<string> createTableIndex = tn =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 | 
					                    var oldtn = tn;
 | 
				
			||||||
                    tn = _commonUtils.QuoteSqlName(tn);
 | 
					                    tn = _commonUtils.QuoteSqlName(tn);
 | 
				
			||||||
                    //创建表的索引
 | 
					                    //创建表的索引
 | 
				
			||||||
                    foreach (var uk in tb.Indexes)
 | 
					                    foreach (var uk in tb.Indexes)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append("CREATE ");
 | 
					                        sb.Append("CREATE ");
 | 
				
			||||||
                        if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                        if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
				
			||||||
                        sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tn).Append("(");
 | 
					                        sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, oldtn))).Append(" ON ").Append(tn).Append("(");
 | 
				
			||||||
                        foreach (var tbcol in uk.Columns)
 | 
					                        foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                            sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -379,7 +380,8 @@ namespace FreeSql.MsAccess
 | 
				
			|||||||
                    foreach (var uk in tb.Indexes)
 | 
					                    foreach (var uk in tb.Indexes)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                        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);
 | 
				
			||||||
 | 
					                        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 => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
 | 
					                        if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
 | 
				
			||||||
                            istmpatler = true;
 | 
					                            istmpatler = true;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,7 +167,7 @@ namespace FreeSql.MySql
 | 
				
			|||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append("CREATE ");
 | 
					                                sb.Append("CREATE ");
 | 
				
			||||||
                                if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                                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)
 | 
					                                foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                    sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -282,13 +282,14 @@ where a.table_schema IN ({0}) and a.table_name IN ({1}) and a.index_name <> 'PRI
 | 
				
			|||||||
                        foreach (var uk in tb.Indexes)
 | 
					                        foreach (var uk in tb.Indexes)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                            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 => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
 | 
					                            if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => 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("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[0], tbname[1])).Append(";\r\n");
 | 
					                                if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[0], tbname[1])).Append(";\r\n");
 | 
				
			||||||
                                sbalter.Append("CREATE ");
 | 
					                                sbalter.Append("CREATE ");
 | 
				
			||||||
                                if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
					                                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)
 | 
					                                foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                    sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -364,7 +365,7 @@ where a.table_schema IN ({0}) and a.table_name IN ({1}) and a.index_name <> 'PRI
 | 
				
			|||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append("CREATE ");
 | 
					                        sb.Append("CREATE ");
 | 
				
			||||||
                        if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                        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)
 | 
					                        foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                            sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -150,7 +150,7 @@ namespace FreeSql.Odbc.Dameng
 | 
				
			|||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append("execute immediate 'CREATE ");
 | 
					                            sb.Append("execute immediate 'CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                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)
 | 
					                    foreach (var uk in tb.Indexes)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                        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() == 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 ");
 | 
					                            sbalter.Append("execute immediate 'CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                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 ");
 | 
					                    sb.Append("execute immediate 'CREATE ");
 | 
				
			||||||
                    if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                    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)
 | 
					                    foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -138,7 +138,7 @@ namespace FreeSql.Odbc.KingbaseES
 | 
				
			|||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append("CREATE ");
 | 
					                            sb.Append("CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -272,13 +272,14 @@ where ns.nspname in ({0}) and d.relname in ({1}) and a.indisprimary = 'f'", tbol
 | 
				
			|||||||
                    foreach (var uk in tb.Indexes)
 | 
					                    foreach (var uk in tb.Indexes)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                        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() == 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("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(";\r\n");
 | 
					                            if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(";\r\n");
 | 
				
			||||||
                            sbalter.Append("CREATE ");
 | 
					                            sbalter.Append("CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -368,7 +369,7 @@ where sys_namespace.nspname={0} and sys_class.relname={1} and sys_constraint.con
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    sb.Append("CREATE ");
 | 
					                    sb.Append("CREATE ");
 | 
				
			||||||
                    if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                    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)
 | 
					                    foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -160,7 +160,7 @@ namespace FreeSql.Odbc.MySql
 | 
				
			|||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append("CREATE ");
 | 
					                                sb.Append("CREATE ");
 | 
				
			||||||
                                if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                                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)
 | 
					                                foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                    sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -275,13 +275,14 @@ where a.table_schema IN ({0}) and a.table_name IN ({1}) and a.index_name <> 'PRI
 | 
				
			|||||||
                        foreach (var uk in tb.Indexes)
 | 
					                        foreach (var uk in tb.Indexes)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                            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 => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
 | 
					                            if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => 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("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[0], tbname[1])).Append(";\r\n");
 | 
					                                if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[0], tbname[1])).Append(";\r\n");
 | 
				
			||||||
                                sbalter.Append("CREATE ");
 | 
					                                sbalter.Append("CREATE ");
 | 
				
			||||||
                                if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
					                                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)
 | 
					                                foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                    sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -357,7 +358,7 @@ where a.table_schema IN ({0}) and a.table_name IN ({1}) and a.index_name <> 'PRI
 | 
				
			|||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append("CREATE ");
 | 
					                        sb.Append("CREATE ");
 | 
				
			||||||
                        if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                        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)
 | 
					                        foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                            sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -150,7 +150,7 @@ namespace FreeSql.Odbc.Oracle
 | 
				
			|||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append("execute immediate 'CREATE ");
 | 
					                            sb.Append("execute immediate 'CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -281,13 +281,14 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
 | 
				
			|||||||
                    foreach (var uk in tb.Indexes)
 | 
					                    foreach (var uk in tb.Indexes)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                        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() == 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 ");
 | 
					                            sbalter.Append("execute immediate 'CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -370,7 +371,7 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    sb.Append("execute immediate 'CREATE ");
 | 
					                    sb.Append("execute immediate 'CREATE ");
 | 
				
			||||||
                    if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                    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)
 | 
					                    foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -150,7 +150,7 @@ namespace FreeSql.Odbc.PostgreSQL
 | 
				
			|||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append("CREATE ");
 | 
					                            sb.Append("CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -284,13 +284,14 @@ where ns.nspname in ({{0}}) and d.relname in ({{1}}) and a.indisprimary = 'f'",
 | 
				
			|||||||
                    foreach (var uk in tb.Indexes)
 | 
					                    foreach (var uk in tb.Indexes)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                        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 || is96 == false)).Any()).Count() != uk.Columns.Length)
 | 
					                        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 || is96 == false)).Any()).Count() != uk.Columns.Length)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(";\r\n");
 | 
					                            if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(";\r\n");
 | 
				
			||||||
                            sbalter.Append("CREATE ");
 | 
					                            sbalter.Append("CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -380,7 +381,7 @@ where pg_namespace.nspname={0} and pg_class.relname={1} and pg_constraint.contyp
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    sb.Append("CREATE ");
 | 
					                    sb.Append("CREATE ");
 | 
				
			||||||
                    if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                    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)
 | 
					                    foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -230,7 +230,7 @@ ELSE
 | 
				
			|||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append("CREATE ");
 | 
					                                sb.Append("CREATE ");
 | 
				
			||||||
                                if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                                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)
 | 
					                                foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                    sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -342,13 +342,14 @@ use [" + database + "];", tboldname ?? tbname);
 | 
				
			|||||||
                        foreach (var uk in tb.Indexes)
 | 
					                        foreach (var uk in tb.Indexes)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                            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 => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
 | 
					                            if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => 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("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append(";\r\n");
 | 
					                                if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append(";\r\n");
 | 
				
			||||||
                                sbalter.Append("CREATE ");
 | 
					                                sbalter.Append("CREATE ");
 | 
				
			||||||
                                if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
					                                if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
				
			||||||
                                sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append("(");
 | 
					                                sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append("(");
 | 
				
			||||||
                                foreach (var tbcol in uk.Columns)
 | 
					                                foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                    sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -450,7 +451,7 @@ use [" + database + "];", tboldname ?? tbname);
 | 
				
			|||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append("CREATE ");
 | 
					                        sb.Append("CREATE ");
 | 
				
			||||||
                        if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                        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)
 | 
					                        foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                            sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -151,7 +151,7 @@ namespace FreeSql.Oracle
 | 
				
			|||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append("execute immediate 'CREATE ");
 | 
					                            sb.Append("execute immediate 'CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -282,13 +282,14 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
 | 
				
			|||||||
                    foreach (var uk in tb.Indexes)
 | 
					                    foreach (var uk in tb.Indexes)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                        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() == 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 ");
 | 
					                            sbalter.Append("execute immediate 'CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -371,7 +372,7 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    sb.Append("execute immediate 'CREATE ");
 | 
					                    sb.Append("execute immediate 'CREATE ");
 | 
				
			||||||
                    if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                    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)
 | 
					                    foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -185,7 +185,7 @@ namespace FreeSql.PostgreSQL
 | 
				
			|||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append("CREATE ");
 | 
					                            sb.Append("CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -319,13 +319,14 @@ where ns.nspname in ({{0}}) and d.relname in ({{1}}) and a.indisprimary = 'f'",
 | 
				
			|||||||
                    foreach (var uk in tb.Indexes)
 | 
					                    foreach (var uk in tb.Indexes)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                        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 || is96 == false)).Any()).Count() != uk.Columns.Length)
 | 
					                        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 || is96 == false)).Any()).Count() != uk.Columns.Length)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(";\r\n");
 | 
					                            if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(";\r\n");
 | 
				
			||||||
                            sbalter.Append("CREATE ");
 | 
					                            sbalter.Append("CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -415,7 +416,7 @@ where pg_namespace.nspname={0} and pg_class.relname={1} and pg_constraint.contyp
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    sb.Append("CREATE ");
 | 
					                    sb.Append("CREATE ");
 | 
				
			||||||
                    if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                    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)
 | 
					                    foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -150,7 +150,7 @@ namespace FreeSql.ShenTong
 | 
				
			|||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append("CREATE ");
 | 
					                            sb.Append("CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -285,13 +285,14 @@ where ns.nspname in ({0}) and d.relname in ({1}) and a.indisprimary = 'f'", tbol
 | 
				
			|||||||
                    foreach (var uk in tb.Indexes)
 | 
					                    foreach (var uk in tb.Indexes)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                        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() == 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("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(";\r\n");
 | 
					                            if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(";\r\n");
 | 
				
			||||||
                            sbalter.Append("CREATE ");
 | 
					                            sbalter.Append("CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
					                            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)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -381,7 +382,7 @@ where sys_namespace.nspname={0} and sys_class.relname={1} and sys_constraint.con
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    sb.Append("CREATE ");
 | 
					                    sb.Append("CREATE ");
 | 
				
			||||||
                    if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                    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)
 | 
					                    foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -229,7 +229,7 @@ ELSE
 | 
				
			|||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append("CREATE ");
 | 
					                                sb.Append("CREATE ");
 | 
				
			||||||
                                if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                                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[2]))).Append(" ON ").Append(createTableName).Append("(");
 | 
				
			||||||
                                foreach (var tbcol in uk.Columns)
 | 
					                                foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                    sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -341,13 +341,14 @@ use [" + database + "];", tboldname ?? tbname);
 | 
				
			|||||||
                        foreach (var uk in tb.Indexes)
 | 
					                        foreach (var uk in tb.Indexes)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                            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[2]);
 | 
				
			||||||
 | 
					                            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 => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
 | 
					                            if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => 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("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append(";\r\n");
 | 
					                                if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append(";\r\n");
 | 
				
			||||||
                                sbalter.Append("CREATE ");
 | 
					                                sbalter.Append("CREATE ");
 | 
				
			||||||
                                if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
					                                if (uk.IsUnique) sbalter.Append("UNIQUE ");
 | 
				
			||||||
                                sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append("(");
 | 
					                                sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append("(");
 | 
				
			||||||
                                foreach (var tbcol in uk.Columns)
 | 
					                                foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                    sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -449,7 +450,7 @@ use [" + database + "];", tboldname ?? tbname);
 | 
				
			|||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append("CREATE ");
 | 
					                        sb.Append("CREATE ");
 | 
				
			||||||
                        if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                        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[2]))).Append(" ON ").Append(tablename).Append("(");
 | 
				
			||||||
                        foreach (var tbcol in uk.Columns)
 | 
					                        foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                            sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -135,7 +135,7 @@ namespace FreeSql.Sqlite
 | 
				
			|||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            sb.Append("CREATE ");
 | 
					                            sb.Append("CREATE ");
 | 
				
			||||||
                            if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                            if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
				
			||||||
                            sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tbname[1]).Append("(");
 | 
					                            sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tbname[1]).Append("(");
 | 
				
			||||||
                            foreach (var tbcol in uk.Columns)
 | 
					                            foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                                sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
@@ -223,7 +223,8 @@ namespace FreeSql.Sqlite
 | 
				
			|||||||
                    foreach (var uk in tb.Indexes)
 | 
					                    foreach (var uk in tb.Indexes)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
 | 
					                        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 => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
 | 
					                        if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
 | 
				
			||||||
                            istmpatler = true;
 | 
					                            istmpatler = true;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
@@ -290,7 +291,7 @@ namespace FreeSql.Sqlite
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    sb.Append("CREATE ");
 | 
					                    sb.Append("CREATE ");
 | 
				
			||||||
                    if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
					                    if (uk.IsUnique) sb.Append("UNIQUE ");
 | 
				
			||||||
                    sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON \"").Append(tablenameOnlyTb).Append("\"(");
 | 
					                    sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON \"").Append(tablenameOnlyTb).Append("\"(");
 | 
				
			||||||
                    foreach (var tbcol in uk.Columns)
 | 
					                    foreach (var tbcol in uk.Columns)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
					                        sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user