biml - 是否可以从 BIML 中的 GetTableSql() 中删除列
问题描述
我在 BIML 中经常使用 GetTableSql() 函数,但我经常需要在执行之前从该函数中删除一些列。这可能吗?
解决方案
您必须编写自己的扩展方法才能这样做。查看代码,您最好从方法调用的结果中清除列 - 这取决于您要执行的操作。
当前GetTableSql
方法是一个扩展方法,它链接一个调用EmitTableScript
,然后调用多个方法来构建返回的 SQL。至少在 BimlStudio 产品中,EmitTableScript 在 BimlExtensions.dll 中的Varigence.Biml.CoreLowerer.Capabilities.TableToPackageLowerer
类中
经过更多思考,可能会更好,更少的支持头痛将是创建表节点的克隆,然后删除您不想要的列。
代码大约
var table0 = this.RootNode.Tables[0];
var tablePrime = table0;
// I don't have a biml project handy so this section is a guess
tablePrime.Columns.Clear();
// Might be AddRange if this method exists
// Remove all the columns that start with ignore, as an example of filtering columns
tablePrime.Columns.Add(table0.Columns.Where(x => !x.name.StartsWith("ignore"));
// end guess block
var sql = tablePrime.GetTableSql();
推荐阅读
- linux - 如何在 linux 中添加 init.h 库?
- oracle11g - 当我们从富文本编辑器输入文本时,如何在 BI Publisher 报表中打印“<20%”
- python - 无法使用 delete() 从数据库中删除对象
- c# - 在不同分辨率的辅助屏幕上最大化表格?
- excel - 命名的非连续范围不能通过 Name.RefersToRange 引用 - 为什么以及如何(优雅地)克服?
- javascript - javascript中的HTTP Content-Length标头计算
- javascript - 如何从最后点击的 div 中提取值?
- powershell - 使用 WinSCP 和带有电子邮件通知的批处理文件进行自动 FTP 传输
- android - 如何选择 Android 应用程序包中包含的架构?
- reactjs - 是否可以在不刷新或退出页面的情况下在 react 应用程序中打开 OAuth 2.0 验证窗口?