2009-08-04 16 views
1

の設定で除外したいテーブルを設定する方法がありますが、私が必要とするのは、含めるテーブルの名前を設定することです。SubSonic 3 IncludeTablesの設定

既にこれを行った人はいますか?

乾杯! アレックス

答えて

1

[OK]を、私は...

それをやっただけは、TTファイルのいくつかの場所で次の行を追加しました: (!ExcludeTables.Contains(tbl.Name))場合 {if((IncludeTables.Length!= 0 & &!IncludeTables.Contains(tbl.Name)))continue;

ActiveRecord.tt 下関係にわずかに異なるライン(!ExcludeTables.Contains(fk.OtherTable))なら、{ ((IncludeTables.Length!= 0 & &なら!IncludeTables.Contains(FK .OtherTable))))continue;

はsettings.ttincludeに以下を添加 列[] IncludeTables =新しい文字列[] { "にtableA"、 "テーブルB"}。

これは実装が簡単ですが、今後のSubSonicアップデートによってカスタマイズが消去されます。 これをプロジェクトに追加できますか?

ありがとうございます! Alex

1

「設定」を変更するだけの「ハック」があります。

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

ハックのビットを、しかし、少なくともそれは、他のファイルの交換部品を回避:だけで...文字列[] ExcludeTablesを交換してください!

+0

いいね!私はそれを試してみよう! 実際、私の実装では、すべてのファイルのコードを変更する必要があり、これはSubSonicのアップデートで問題になります。 – AlexCode

関連する問題