在配置上有一种设置我们想要排除的表的方法,但我需要的是设置我想要包含的表的名称,排除其他所有。
有人已经这样做了吗?
干杯! 亚历
答案 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();
有点黑客,但至少它避免替换其他文件的部分!