EF Database First 给字段添加描述

 方法思路是通过T4模板生成类文件的时候增加字段描述,首先添加一个模板文件GetComments.ttinclude,如下

1、打开编写代码: 

<#@ template language="C#" hostspecific="True" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Text" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="$(SolutionDir)AppServer.Web\bin\Oracle.ManagedDataAccess.dll"#>
<#@ import namespace="System.Data" #>
<#@ import namespace="Oracle.ManagedDataAccess.Client"#>
<#+ DataTable dt; private int Square(int i) { OracleConnection conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ip or servername)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist Security Info=True;User ID=*****;Password=****;"); conn.Open(); var cmd = conn.CreateCommand(); string sql = @"select TABLE_NAME,COLUMN_NAME,COMMENTS from USER_COL_COMMENTS WHERE TABLE_NAME IN (select t.table_name from user_tab_comments t)"; OracleDataAdapter oda = new OracleDataAdapter(sql, conn); dt = new DataTable(); oda.Fill(dt);
                        conn.Close(); return dt.Rows.Count; } public string GetFieldDesc(string table, string field) { if(dt==null){ Square(12); } DataRow dr = dt.Select(string.Format("TABLE_NAME='{0}' and COLUMN_NAME='{1}'", table, field)).FirstOrDefault(); // if (dr != null) return dr["COMMENTS"].ToString(); else return "无描述"; } #>

 因为数据库是oracle数据库用到了Oracle.ManagedDataAccess.dll,所以代码中有<#@ assembly name="$(SolutionDir)AppServer.Web\bin\Oracle.ManagedDataAccess.dll"#>一行,意思是引用这个程序集。如果你是SQL或其它数据库,修改一下部分代码就可以了。

2、打开Model1.tt,引用刚才的文件

<#@ include file="GetComments.ttinclude"  #>

找到生成字段名的地方,我的EF6.1.3中是这样的<#=codeStringGenerator.Property(edmProperty)#>。在其前面添加这段代码:

 /// <summary>
 /// <#=GetFieldDesc(code.Escape(entity),code.Escape(edmProperty))#>
 /// </summary>

 

保存即可。

转载于:https://www.cnblogs.com/Fady/p/4962979.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值