2009-08-04 2 views
1

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

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

Cheers! Alex

ответ

1

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

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

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

и добавил следующее на settings.ttinclude Строка [] IncludeTables = новая строка [] { "TableA", "TableB"};

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

Спасибо! Alex

1

Существует еще один «взлом», в котором вам нужно только изменить 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(); 

немного рубить, но, по крайней мере, это позволяет избежать замена деталей других файлов!

+0

Выглядит неплохо! Я попробую! На самом деле моя реализация требует изменения кода во всех файлах, которые будут проблемой для обновлений SubSonic. – AlexCode