2011-12-08 8 views
0

一部のORMでは、1対多の関係が存在する場合、テーブルを表すクラスは通常、「User」のような列名を持つ単一オブジェクトを持ち、一致するテーブル行。Subsonicアクティブレコードの子FKオブジェクトを使用したフィルタリング

代わりに、Subsonicは何らかの理由で、文字列sに文字sを追加してプロパティColumnNameを追加することを選択しました。単一のユーザーオブジェクトの代わりにIQueryableを返します。

ユーザーのプロパティの一部に基づいて結果をフィルタリングするにはどうしたらいいですか?

私はこのような何かをしようとしていた。

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

はORMでこれを行うためのより良い方法があるか、私は、カスタムのLINQを使用する必要がありますか?

答えて

1

これは、サブソニックの欠点であり、優れた解決策に値するものと思われます。

現在、作成するActiveRecordクラスの1つと同じ名前の部分クラスを作成し、カスタムゲッターを追加する方法があります。

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

あなたが勇気を持っている場合、T4ファイルを変更することで、より効率的にこれを行うことが可能であるべきです!

+0

答えをありがとう...私はSubsonicから離れ、LINQに向かってSQLとPLINQOに移行するつもりだと思います。 –

関連する問題