在某些ORM中,如果存在一对多关系,则表示表的类通常具有单个对象,其列名称为“User”,并使用匹配表行的内容填充该属性。
由于某种原因,Subsonic选择添加一个附加了字母s的属性ColumnName。它返回IQueryable而不是单个用户对象。
如何根据用户的某些属性过滤结果?
我试图做这样的事情:
FileRecord thumbnailImageRecord = newsArticleVersion.NewsArticleVersionFileMaps
.SingleOrDefault(f => f.FileRecords.Single().FilePurpose == 3)
.FileRecords.Single();
在ORM中有更好的方法吗?或者我只需要使用自定义Linq?
答案 0 :(得分:1)
这似乎是SubSonic的一个缺点,值得一个更好的解决方案。
目前,一种方法是创建一个与生成的ActiveRecord类同名的部分类,并添加一个自定义的getter。
public partial class child {
public parent parent {
get { return parent.SingleOrDefault(x => this.parent_id == x.id); }
}
}
如果你有勇气,应该可以通过修改T4文件来更有效地做到这一点!