From 0f99c6f20a02482ac957679f076105c4a9ed10db Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 11 Nov 2018 13:15:18 +0800 Subject: [PATCH] CodeFirst Support Column Description --- .../SqlServerTest/Demos/5_CodeFirst.cs | 4 +- .../CodeFirstProvider/CodeFirstProvider.cs | 2 + .../DbMaintenanceProvider/Properties.cs | 38 +++++++++++++++++++ .../EntityMaintenance/EntityMaintenance.cs | 1 + Src/Asp.Net/SqlSugar/Entities/EntityInfo.cs | 1 + .../Entities/Mapping/SugarMappingAttribute.cs | 6 +++ .../SqlSugar/Interface/IDbMaintenance.cs | 1 + 7 files changed, 52 insertions(+), 1 deletion(-) diff --git a/Src/Asp.Net/SqlServerTest/Demos/5_CodeFirst.cs b/Src/Asp.Net/SqlServerTest/Demos/5_CodeFirst.cs index 965991457..62abc3bed 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/5_CodeFirst.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/5_CodeFirst.cs @@ -6,10 +6,12 @@ using System.Text; namespace OrmTest.Demo { + [SugarTable("CodeTable", " table CodeTable")] public class CodeTable { - [SugarColumn(IsNullable =false ,IsPrimaryKey =true,IsIdentity =true)] + + [SugarColumn(IsNullable =false ,IsPrimaryKey =true,IsIdentity =true,ColumnDescription ="XXhaha primary key!!")] public int Id { get; set; } [SugarColumn(Length = 21,OldColumnName = "Name2")] public string Name{ get; set; } diff --git a/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs index b75125131..d46c6235c 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs @@ -73,6 +73,8 @@ namespace SqlSugar ExistLogic(entityInfo); else NoExistLogic(entityInfo); + + this.Context.DbMaintenance.AddRemark(entityInfo); } public virtual void NoExistLogic(EntityInfo entityInfo) { diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Properties.cs b/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Properties.cs index 3bd7d27f7..c3b98a0a5 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Properties.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Properties.cs @@ -60,6 +60,44 @@ namespace SqlSugar protected abstract string CreateTableNotNull { get; } protected abstract string CreateTablePirmaryKey { get; } protected abstract string CreateTableIdentity { get; } + + public virtual bool AddRemark(EntityInfo entity) + { + var db = this.Context; + var columns = entity.Columns.Where(it => it.IsIgnore == false).ToList(); + + foreach (var item in columns) + { + if (item.ColumnDescription != null) + { + //column remak + if (db.DbMaintenance.IsAnyColumnRemark(item.DbColumnName, item.DbTableName)) + { + db.DbMaintenance.DeleteColumnRemark(item.DbColumnName, item.DbTableName); + db.DbMaintenance.AddColumnRemark(item.DbColumnName, item.DbTableName, item.ColumnDescription); + } + else + { + db.DbMaintenance.AddColumnRemark(item.DbColumnName, item.DbTableName, item.ColumnDescription); + } + } + } + + //table remak + if (entity.TableDescription != null) + { + if (db.DbMaintenance.IsAnyTableRemark(entity.DbTableName)) + { + db.DbMaintenance.DeleteTableRemark(entity.DbTableName); + db.DbMaintenance.AddTableRemark(entity.DbTableName, entity.TableDescription); + } + else + { + db.DbMaintenance.AddTableRemark(entity.DbTableName, entity.TableDescription); + } + } + return true; + } #endregion } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs b/Src/Asp.Net/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs index fbf77e460..ab89467ee 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs @@ -27,6 +27,7 @@ namespace SqlSugar { var sugarTable = (SugarTable)sugarAttributeInfo; result.DbTableName = sugarTable.TableName; + result.TableDescription = sugarTable.TableDescription; } if (this.Context.Context.CurrentConnectionConfig.ConfigureExternalServices != null && this.Context.CurrentConnectionConfig.ConfigureExternalServices.EntityNameService != null) { this.Context.CurrentConnectionConfig.ConfigureExternalServices.EntityNameService(type,result); diff --git a/Src/Asp.Net/SqlSugar/Entities/EntityInfo.cs b/Src/Asp.Net/SqlSugar/Entities/EntityInfo.cs index 5e3830376..f3241b098 100644 --- a/Src/Asp.Net/SqlSugar/Entities/EntityInfo.cs +++ b/Src/Asp.Net/SqlSugar/Entities/EntityInfo.cs @@ -12,6 +12,7 @@ namespace SqlSugar private string _DbTableName; public string EntityName { get; set; } public string DbTableName { get { return _DbTableName == null ? EntityName : _DbTableName; } set { _DbTableName = value; } } + public string TableDescription { get; set; } public Type Type { get; set; } public List Columns { get; set; } } diff --git a/Src/Asp.Net/SqlSugar/Entities/Mapping/SugarMappingAttribute.cs b/Src/Asp.Net/SqlSugar/Entities/Mapping/SugarMappingAttribute.cs index a44d15660..e0d1474d6 100644 --- a/Src/Asp.Net/SqlSugar/Entities/Mapping/SugarMappingAttribute.cs +++ b/Src/Asp.Net/SqlSugar/Entities/Mapping/SugarMappingAttribute.cs @@ -10,9 +10,15 @@ namespace SqlSugar public class SugarTable : Attribute { private SugarTable() { } public string TableName { get; set; } + public string TableDescription { get; set; } public SugarTable(string tableName) { this.TableName = tableName; } + public SugarTable(string tableName,string tableDescription) + { + this.TableName = tableName; + this.TableDescription = tableName; + } } [AttributeUsage(AttributeTargets.Property , Inherited = true)] public class SugarColumn : Attribute diff --git a/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs index de5e4c49d..73ab5944a 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs @@ -37,6 +37,7 @@ namespace SqlSugar bool BackupTable(string oldTableName, string newTableName, int maxBackupDataRows = int.MaxValue); bool DropColumn(string tableName,string columnName); bool RenameColumn(string tableName, string oldColumnName, string newColumnName); + bool AddRemark(EntityInfo entity); bool AddColumnRemark(string columnName,string tableName,string description); bool DeleteColumnRemark(string columnName, string tableName); bool IsAnyColumnRemark(string columnName, string tableName);