Можно ли удалить столбец из GetTable Sql () в BIML - PullRequest
2 голосов
/ 06 марта 2020

Я часто использую функцию GetTable Sql () в BIML, но мне часто приходится удалять некоторые столбцы из этой функции перед ее выполнением. Это возможно?

1 Ответ

1 голос
/ 09 марта 2020

Для этого вам нужно написать свой собственный метод Extension. Просматривая код, вам может быть лучше просто удалить столбцы из результатов вызова метода - это просто зависит от того, что вы хотите сделать.

Текущий метод GetTableSql является метод расширения, который связывает вызов с EmitTableScript, который, в свою очередь, вызывает несколько методов для построения возвращаемого SQL. По крайней мере, в продукте BimlStudio EmitTableScript находится в классе Varigence.Biml.CoreLowerer.Capabilities.TableToPackageLowerer в BimlExtensions.dll

Если подумать немного больше, то, что может быть еще лучше, меньше головной боли поддержки будет создавать клон узла таблицы а затем удалите столбцы, которые вы не хотите.

Код приблизительно

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...