使用Subsonic Active Record Child FK对象进行过滤

时间:2011-12-08 16:04:13

标签: .net orm subsonic subsonic3 subsonic-active-record

在某些ORM中,如果存在一对多关系,则表示表的类通常具有单个对象,其列名称为“User”,并使用匹配表行的内容填充该属性。

由于某种原因,Subsonic选择添加一个附加了字母s的属性ColumnName。它返回IQueryable而不是单个用户对象。

如何根据用户的某些属性过滤结果?

我试图做这样的事情:

 FileRecord thumbnailImageRecord = newsArticleVersion.NewsArticleVersionFileMaps
            .SingleOrDefault(f => f.FileRecords.Single().FilePurpose == 3)
            .FileRecords.Single();

在ORM中有更好的方法吗?或者我只需要使用自定义Linq?

1 个答案:

答案 0 :(得分:1)

这似乎是SubSonic的一个缺点,值得一个更好的解决方案。

目前,一种方法是创建一个与生成的ActiveRecord类同名的部分类,并添加一个自定义的getter。

public partial class child {
  public parent parent {
    get { return parent.SingleOrDefault(x => this.parent_id == x.id); }
  }
}

如果你有勇气,应该可以通过修改T4文件来更有效地做到这一点!