使用亚音速活动记录子FK对象进行过滤



在一些ORM中,如果存在一对多关系,则表示表的类通常具有一个具有列名(如'User')的单个对象,并且它使用匹配表行的内容填充属性。

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

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

我想做这样的事情:

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

在ORM中是否有更好的方法来做到这一点,或者我只需要使用自定义Linq?

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

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

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

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

最新更新