diff --git a/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs index cdf74f4b0..c88187e78 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs @@ -268,6 +268,7 @@ namespace SqlSugar { item.IndexName = (this.Context.CurrentConnectionConfig.IndexSuffix+ item.IndexName); } + var include = ""; if (item.IndexName != null) { var database = "{db}"; @@ -280,6 +281,11 @@ namespace SqlSugar { item.IndexName = item.IndexName.Replace(table, entityInfo.DbTableName); } + if (item.IndexName.ToLower().Contains("{include:")) + { + include=Regex.Match( item.IndexName,@"\{include\:.+$").Value; + item.IndexName = item.IndexName.Replace(include, ""); + } } if (!this.Context.DbMaintenance.IsAnyIndex(item.IndexName)) { @@ -296,7 +302,7 @@ namespace SqlSugar return new KeyValuePair(dbColumn.DbColumnName, it.Value); }) .Select(it => querybulder.GetTranslationColumnName(it.Key) + " " + it.Value).ToArray(); - this.Context.DbMaintenance.CreateIndex(entityInfo.DbTableName, fileds, item.IndexName, item.IsUnique); + this.Context.DbMaintenance.CreateIndex(entityInfo.DbTableName, fileds, item.IndexName+ include, item.IsUnique); } } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs b/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs index 2ebf62065..665feda9e 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; +using System.Text.RegularExpressions; namespace SqlSugar { @@ -467,7 +468,19 @@ namespace SqlSugar } public virtual bool CreateIndex(string tableName, string[] columnNames, string IndexName, bool isUnique = false) { - string sql = string.Format("CREATE {3} INDEX {2} ON {0}({1})", tableName, string.Join(",", columnNames), IndexName, isUnique ? "UNIQUE" : ""); + var include = ""; + if (IndexName.ToLower().Contains("{include:")) + { + include = Regex.Match(IndexName, @"\{include\:.+$").Value; + IndexName = IndexName.Replace(include, ""); + if (include == null) + { + throw new Exception("include format error"); + } + include = include.Replace("{include:", "").Replace("}", ""); + include = $"include({include})"; + } + string sql = string.Format("CREATE {3} INDEX {2} ON {0}({1})"+ include, tableName, string.Join(",", columnNames), IndexName, isUnique ? "UNIQUE" : ""); this.Context.Ado.ExecuteCommand(sql); return true; }