在一些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文件应该可以更有效地做到这一点!