Конфигурация SubSonic 3 IncludeTables - PullRequest
1 голос
/ 04 августа 2009

в конфигурации есть способ установить таблицы, которые мы хотим исключить, но мне нужно задать имя таблицы, которую я хочу включить, исключая все остальное.

Кто-нибудь уже сделал это?

Ура! Alex

Ответы [ 2 ]

1 голос
/ 18 августа 2009

Есть еще один «хак», при котором вам нужно всего лишь изменить Settings.ttinclude; просто замените строку [] ExcludeTables ... на:

public interface ITableExcluder
{
    bool Contains(string table);
    bool ShouldExclude(string table);
    bool ShouldInclude(string table);
}

/// <summary>
/// Custom class to exclude tables via a programmatic means.
/// </summary>
public class TableExcluder : ITableExcluder
{
    public bool Contains(string tableName)
    {
        if (ShouldExclude(tableName))
        return true;
        return !ShouldInclude(tableName);
    }

    public bool ShouldExclude(string tableName)
    {
        switch (tableName)
        {
            case "sysdiagrams":
        case "BuildVersion":
            return true;
        }

        if (tableName.StartsWith("blog_"))
            return true;

        return false;
    }

    public bool ShouldInclude(string tableName)
    {
        return true;
    }
}

//This replaces the string array    
ITableExcluder ExcludeTables = new TableExcluder();

Немного взломано, но, по крайней мере, избегает замены частей других файлов!

1 голос
/ 04 августа 2009

Хорошо, я сделал это ...

Просто добавил следующую строку в нескольких местах в файлах tt: если (! ExcludeTables.Contains (tbl.Name)) {if ((IncludeTables.Length! = 0 &&! IncludeTables.Contains (tbl.Name))) continue;

немного другая строка в отношениях под ActiveRecord.tt если (! ExcludeTables.Contains (fk.OtherTable)) { if ((IncludeTables.Length! = 0 &&! IncludeTables.Contains (fk.OtherTable))) continue;

и добавили следующее в настройки .ttinclude string [] IncludeTables = new string [] {"tableA", "tableB"};

Это легко реализовать, но будущие обновления SubSonic сотрут мою настройку. Можно ли это добавить в проект?

Спасибо! Alex

...