2011-12-08 29 views
0

在某些ORM中,如果存在一對多關係,則表示類的類通常具有單個對象,其列名稱如'User',並且它會使用匹配錶行。使用亞音速活動記錄子FK對象進行過濾

由於某種原因,Subsonic改爲選擇添加一個屬性ColumnName並附加字母s。它返回IQueryable而不是單個用戶對象。

如何根據用戶的某些屬性過濾結果?

我試圖做這樣的事情:

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

有沒有在ORM這樣做的更好的辦法還是我只需要使用自定義的LINQ?

回答

1

這似乎是SubSonic的一個缺點,值得一個更好的解決方案。

目前,一種方法是創建一個與生成的ActiveRecord類相同名稱的部分類,並添加一個自定義getter。

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

通過修改T4文件,如果您有勇氣,應該可以更有效地做到這一點!

+0

感謝您的回答......我想我將離開Subsonic並轉向LINQ to SQL和PLINQO。 –