2009-08-04 13 views
1

In der Konfiguration gibt es eine Möglichkeit, die Tabellen zu definieren, die wir ausschließen möchten, aber ich muss den Namen der Tabelle angeben, die ich einschließen möchte, alles andere ausgenommen.SubSonic 3 IncludeTables-Konfiguration

Hat jemand schon das getan?

Prost! Alex

Antwort

1

Ok, ich habe es getan ...

Gerade die folgende Zeile an wenigen Stellen auf den TT-Dateien hinzugefügt: wenn (ExcludeTables.Contains (tbl.Name)!) {if ((IncludeTables.Length! = 0 & &! IncludeTables.Contains (tbl.Name))) fortfahren;

eine etwas andere Linie über die Beziehungen unter dem ActiveRecord.tt if (! ExcludeTables.Contains (fk.OtherTable)) { if ((IncludeTables.Length! = 0 & &! IncludeTables.Contains (fk .OtherTable))) fortfahren;

und addierten folgende auf der settings.ttinclude String [] IncludeTables = new String [] { "tableA", "tableB"};

Dies ist einfach zu implementieren, aber ein zukünftiges SubSonic-Update wird meine Anpassung löschen. Kann dies dem Projekt hinzugefügt werden?

Danke! Alex

1

Es gibt einen anderen "Hack", bei dem Sie nur Settings.ttinclude ändern müssen; nur string [] ExcludeTables ersetzen ... mit:

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

Ein bisschen wie ein Hack, aber zumindest ist es vermeidet Teile der anderen Dateien zu ersetzen!

+0

Sieht gut aus! Ich werde es versuchen! Tatsächlich erfordert meine Implementierung die Änderung des Codes für alle Dateien, was bei SubSonic-Updates ein Problem sein wird. – AlexCode