2009-08-04 7 views
1

Sur la configuration, il existe un moyen de définir les tables que nous voulons exclure, mais ce dont j'ai besoin est de définir le nom de la table que je veux inclure, à l'exclusion de tout le reste.Configuration SubSonic 3 IncludeTables

Avez-vous déjà fait cela?

À la votre! Alex

Répondre

1

Ok, je l'ai fait ...

Juste ajouté la ligne suivante dans quelques endroits sur les fichiers tt: si (ExcludeTables.Contains (tbl.Name)!) {if ((IncludeTables.Length! = 0 & &! IncludeTables.Contains (tbl.Name))) continue;

une ligne légèrement différente sur les relations sous la ActiveRecord.tt if (! ExcludeTables.Contains (fk.OtherTable)) {if (( IncludeTables.Length! = 0 & &! IncludeTables.Contains (fk .OtherTable))) continuer;

et ajouté ce qui suit sur la settings.ttinclude string [] IncludeTables = new string [] { "tableA", "tableB"};

Ceci est facile à implémenter mais une prochaine mise à jour SubSonic effacera ma personnalisation. Est-ce que cela peut être ajouté au projet?

Merci! Alex

1

Il existe un autre "Hack" par lequel vous avez seulement besoin de modifier Settings.ttinclude; il suffit de remplacer string [] ExcludeTables ... avec:

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(); 

Un peu un hack, mais au moins il évite de remplacer une partie des autres fichiers!

+0

Ça a l'air sympa! Je vais essayer ça! En fait mon implémentation nécessite de changer le code sur tous les fichiers ce qui sera un problème sur les mises à jour SubSonic. – AlexCode