发布网友 发布时间:2022-04-23 06:04
共5个回答
懂视网 时间:2022-05-02 09:02
获取注释基本原理是调用数据库::fn_listextendedproperty函数,获取扩展属性MS_Description
technet 参考资料:sys.fn_listextendedproperty (Transact-SQL)
一、首先是 PetaPoco.Core.ttinclude
1、106行原始:
public string SequenceName; public bool Ignore;
新建Description字段,这个是表的注释
public string SequenceName; public bool Ignore; public string Description;
2、140行原始:
public string SequenceName; public bool Ignore;
新建Description字段,这个是列的注释
public string SequenceName; public bool Ignore; public string Description;
3、517行原始:
foreach (var tbl in result) { tbl.Columns=LoadColumns(tbl); // Mark the primary key string PrimaryKey=GetPK(tbl.Name); var pkColumn=tbl.Columns.SingleOrDefault(x=>x.Name.ToLower().Trim()==PrimaryKey.ToLower().Trim()); if(pkColumn!=null) { pkColumn.IsPK=true; } }
修改后,调用函数获取表注释:
foreach (var tbl in result) { using(var cmdDesc=_factory.CreateCommand()) { cmdDesc.Connection = connection; cmdDesc.CommandText = TABLE_DESC_SQL; DbParameter p = null; p = cmdDesc.CreateParameter(); p.ParameterName = "@schema"; p.Value = tbl.Schema; cmdDesc.Parameters.Add(p); p = cmdDesc.CreateParameter(); p.ParameterName = "@table"; p.Value = tbl.Name; cmdDesc.Parameters.Add(p); using (var rdrDesc = cmdDesc.ExecuteReader()) { if (rdrDesc.Read()) tbl.Description = rdrDesc["value"].ToString(); } } tbl.Columns=LoadColumns(tbl); // Mark the primary key string PrimaryKey=GetPK(tbl.Name); var pkColumn=tbl.Columns.SingleOrDefault(x=>x.Name.ToLower().Trim()==PrimaryKey.ToLower().Trim()); if(pkColumn!=null) { pkColumn.IsPK=true; } }
4、572行原始,插入新代码,获取每一列的注释(return result 上面):
foreach (var col in result) { using (var cmdDesc = _factory.CreateCommand()) { cmdDesc.Connection = _connection; cmdDesc.CommandText = COLUMN_DESC_SQL; DbParameter pDesc = null; pDesc = cmdDesc.CreateParameter(); pDesc.ParameterName = "@schema"; pDesc.Value = tbl.Schema; cmdDesc.Parameters.Add(pDesc); pDesc = cmdDesc.CreateParameter(); pDesc.ParameterName = "@table"; pDesc.Value = tbl.Name; cmdDesc.Parameters.Add(pDesc); pDesc = cmdDesc.CreateParameter(); pDesc.ParameterName = "@column"; pDesc.Value = col.Name; cmdDesc.Parameters.Add(pDesc); using (var rdrDesc = cmdDesc.ExecuteReader()) { if (rdrDesc.Read()) col.Description = rdrDesc["value"].ToString(); } } }
5、672、688行原始,插入新的代码,存储调用函数的sql语句:
const string TABLE_DESC_SQL = @"SELECT value FROM ::fn_listextendedproperty(‘MS_Description‘, ‘user‘, @schema, ‘table‘, @table, null, null)"; const string COLUMN_DESC_SQL = @"SELECT value FROM ::fn_listextendedproperty(‘MS_Description‘, ‘user‘, @schema, ‘table‘, @table, ‘column‘, @column)";
至此已经从数据库获取到了注释,下面需要将注释插入到T4模板中!
二、修改PetaPoco.Generator.ttinclude
1、141行原始:
<# foreach(Table tbl in from t in tables where !t.Ignore select t) { #> <# if (string.IsNullOrEmpty(tbl.Schema)) { #> [TableName("<#=tbl.Name#>")] <# } else { #>
添加表的 Description 注释:
<# foreach(Table tbl in from t in tables where !t.Ignore select t) { #> /// <summary> /// <#=tbl.Description??""#> /// </summary> <# if (string.IsNullOrEmpty(tbl.Schema)) { #> [TableName("<#=tbl.Name#>")] <# } else { #>
2、167行原始:
<# foreach(Column col in from c in tbl.Columns where !c.Ignore select c) { // Column bindings #> <# if (TrackModifiedColumns) { #>
添加列的 Description 注释:
<# foreach(Column col in from c in tbl.Columns where !c.Ignore select c) { // Column bindings #> /// <summary> /// <#=col.Description??""#> /// </summary> <# if (TrackModifiedColumns) { #>
这样就改完了,打开database.tt按ctrl+s就能更新获取到的注释了!
另外GetInstance居然不是单例方法,这简直没法忍,果断改掉:
PetaPoco.Generator.ttinclude,38行修改为:
public static <#=RepoName#> GetInstance() { if (_instance!=null) return _instance; if (Factory!=null) return Factory.GetInstance(); //else // return new <#=RepoName#>(); return _instance = new <#=RepoName#>(); }
petapoco-SQLServer模型增加注释
标签:comm 需要 val code mil .exe 添加 actor target
热心网友 时间:2022-05-02 06:10
1.首先把需要两组或者多组数据录入表格,把数据的字体,格式,大小都编辑为统一的格式。热心网友 时间:2022-05-02 07:28
选中d列-->点"格式"-->"条件格式:"-->"单元格数值"-->"等于热心网友 时间:2022-05-02 09:03
利用Rational Rose进行C++代码和数据库结构分析。分析已有的代码其主要的目的就是了解代码结构和数据结构,这些对应到模型图就是类图、数据模型图和组件图(对UML各种模型图的描述见注释③),也就是通过Rational Rose的逆向工程所得到的结果。利用Rational Rose可以进行关系数据库的数据模型设计并导出DDL语言脚本,相反还可以导入已有的DDL脚本生成数据模型以及连接SQLServer, DB2, Oracle等数据库并导入数据库的schema生成数据模型。首先,通过逆向工程,用户已经得到了UML模型或者数据模型的各个组件以及它们之间的关系。热心网友 时间:2022-05-02 10:54
具体数据格式是怎样的?