NET+EF+MVC如何生成数据库表实体时自动加上字段说明生成字段注释

我们在用NET+EF+MVC框架开发的时候,用微软提供的EF框架(笔者用的EF6),在从数据库更新实体模型时没有自动生成表字段和表说明,这个开发带来极大的隐患,本来用PD设计数据库架构时每个字段是带注释的,团队开发时因为没有生成带注释的字段说明,会给团队成员带来开发效率低下等系列问题,本文笔者详细介绍一下VS2015/2017/2019中从数据库更新实体模型时自动加上数据库表字段注释(如果在开发前用第三方工具如EF_Core_Power_Tools生成实体带注释的当然也可以,不在本文讨论之列)

本文操作,不需要下载任何文件,只需要按笔者步聚操作即可。

第一步:打开你的项目,找到实体项目类,在Model.tt文件(看你实际应用的名称)添加一个方法,该方法可以读取数据库中的字段说明,找到public string Property(EdmProperty edmProperty)这个方法,将下面代码添加到这个方法的下面





public string GetRemark(EdmProperty edmProperty){


var tableName = edmProperty.DeclaringType.Name;

var colName=_code.Escape(edmProperty);

string sql = string.Format(@"SELECT 字段说明=isnull(props.[value],'') FROM syscolumns cols inner join sysobjects objs on cols.id= objs.id and objs.xtype='U' and objs.name<>'dtproperties' left join sys.extended_properties props on cols.id=props.major_id and cols.colid=props.minor_id where objs.name='{0}' and cols.name='{1}'",tableName,colName);

string sqlcon = "Data Source=.;User ID=sa;Password=123456;Initial Catalog=gpt";

object remark=new object();

using(System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(sqlcon)){

conn.Open();

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, conn);

remark =cmd.ExecuteScalar();

}

return remark+"";

}

第二步:按下面提示修改Model.tt文件,搜索 <#=codeStringGenerator.Property(edmProperty)#> 这行代码,在这行代码上方添加如下代码



/// <summary>

/// <#=codeStringGenerator.GetRemark(edmProperty)#>

/// </summary>

第三步:添加成功后,保存Model.tt文件,保存的同时你所有的数据库实体文件都自动加上注释了。


版权声明:

作者: freeclashnode

链接: https://www.freeclashnode.com/news/article-2607.htm

来源: FreeClashNode

文章版权归作者所有,未经允许请勿转载。

免费节点实时更新

热门文章

最新文章

归档