SubSonic 3 IncludeTables配置

时间:2009-08-04 08:38:47

标签: subsonic subsonic3

在配置上有一种设置我们想要排除的表的方法,但我需要的是设置我想要包含的表的名称,排除其他所有。

有人已经这样做了吗?

干杯! 亚历

2 个答案:

答案 0 :(得分:1)

好的,我已经完成了......

只需在tt文件的几个位置添加以下行: 如果(!ExcludeTables.Contains(tbl.Name))         {if((IncludeTables.Length!= 0&&!IncludeTables.Contains(tbl.Name)))继续;

ActiveRecord.tt 下的关系略有不同 如果(!ExcludeTables.Contains(fk.OtherTable)){     if((IncludeTables.Length!= 0&&!IncludeTables.Contains(fk.OtherTable)))继续;

在settings.ttinclude 上添加了以下内容 string [] IncludeTables = new string [] {“tableA”,“tableB”};

这很容易实现,但未来的SubSonic更新将删除我的自定义。 这可以添加到项目中吗?

谢谢! 亚历

答案 1 :(得分:1)

还有另一个“Hack”,你只需要更改Settings.ttinclude;只需将string [] 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();

有点黑客,但至少它避免替换其他文件的部分!