我必须在我的数据库中存储树状结构(例如,想象文件夹)。我选择的模型非常简单:表有一个FolderId(PK,int,identity),一些随机属性和一个可空的ParentId(same-table-FK到FolderId,int,nullable)。
这一切都很有效。我正在使用SubSonic的ActiveRecord模板。有没有办法让我生成的Folder类具有Parent / Children属性,而不仅仅是“Folders”?
我怀疑我必须编辑模板,可能是ActiveRecord.tt。如果是这样,有人能指出我的起点吗?也许有人做过类似的事情?
答案 0 :(得分:1)
我想现在看到明显的为时已晚:我可以简单地按照
的方式做点什么partial class Folder
{
public Folder Parent
{
get {
if (_ParentId.HasValue)
{
var repo = ACME.Folder.GetRepo();
return
(from items in repo.GetAll()
where _ParentId.Value == items._FolderId
select items).First();
}
else
return null;
}
}
public IQueryable<Folder> Children
{
get {
var repo = ACME.Folder.GetRepo();
return from items in repo.GetAll()
where _FolderId == items.ParentId
select items;
}
}
}
答案 1 :(得分:1)
所有生成的类都是Partials,所以你可以做你上面所做的,但只是为它创建一个局部类,所以它都在“相同”的类中......