2009-07-16 26 views
2

linqを使って亜音速で左結合しようとしましたが、うまくいかないようですが、大きなエラーが発生します。Subsonic 3.0 Left Join

私は、オブジェクトとLinq2Sqlを使って数回行ったように、クエリが正しいと確信しています。

  var post = from p in Post.All() 
         join q in Quote.All() on p.ID equals q.PostID into pq 
         where p.ID == id.Value 
         from qt in pq.DefaultIfEmpty() 
         select new {p, qt}; 

ちょうど亜音速が左のjoin linqクエリから必要なSQLを生成できないようです。

ここで何か問題がありますか?回避策はありますか?

アップデート:私はここに亜音速3.0.0.2を使用して、私は左のタイプの亜音速

式に参加しようとすると、私が取得エラーですよ「System.Collections.Generic.IEnumerable 1[GetAQuote.Post]' cannot be used for parameter of type 'System.Linq.IQueryable 1 [GetAQuote.Post] 'メソッドのSystem.Linq.IQueryable 1[<>f__AnonymousType2 2 [GetAQuote.Post、System.Collections.Generic.IEnumerable 1[GetAQuote.Quote]]] GroupJoin[Post,Quote,Int32,<>f__AnonymousType2 2](System.Linq.IQueryable 1[GetAQuote.Post], System.Collections.Generic.IEnumerable 1 [GetAQuote.Quote]、System.Linq.Expressions.Expression 1[System.Func 2 [ GetAQuote.Post、System.Int32]]、System.Linq.Expressions.Expression 1[System.Func 2 [GetAQuote.Quote、System.Int32]]、System.Linq.Expressions.Expression 1[System.Func 3 [GetAQuote.Post、System.Collections.Generic。 IEnumerable 1[GetAQuote.Quote],<>f__AnonymousType2 2 [GetAQuote.Post、System.Collections.Generic.IEnumerable`1 [GetAQuote.Quote]]]) '

+0

あなたが見ている大きなエラーの詳細を投稿してください。バージョン3.0.0.2でこれもあります –

+0

うん、私は3.0.0.2を使用しています。私はエラーメッセージで投稿を更新しました。 – Naz

+0

あなたはどのテンプレートを使用していますか? –

答えて

4

私は次の数日間に引き寄せようとしている左参加のためのフォークを持っています。

+0

こんにちは、これは修正される可能性がありますいつでも最新のアップデート? – Naz

+0

私もこれを修正する必要があります。それはまだ動作しないようだ!ありがとう! – ullmark

1

私はそれがバグだと思うし、サブソニックによってサポートされるつもりはないと思う。他の仕事をしているときに同じ問題が発生しましたhere

0

これのための修正はまだありません。単純な修正(汚いものですが)は、左結合を処理するビューを作成し、右から空のデータをデフォルトデータで埋めて、SubSonicにそのビューを簡単に結合させることです。

私はそれがひどいことを知っていますが、今はその修正です。私はこの制限のためにSubSonicを落とすことができませんでした。すぐに修正されると確信しています。

+0

10ヶ月後...まだサブソニックに参加する方法を理解しようとしています。私は単純に数回往復することを余儀なくされたと思う...少年のSubSonicは本当に我々の開発時間に対して正の肯定的なものだった... /風刺 –

+0

私は亜音速での使用をやめた。利便性よりも頭痛の原因となったDAL(亜音速だけでなく)と結婚しているように見えました。私は、SQLとDatatablesの簡単なアプローチに戻ってきました。データ処理可能なJSONハンドラを追加すると、もっと幸せになりました。がんばろう! – used2could

3

ここでは古いトピックを復活させていますが、後で検索する場合は、左外部結合のためにSubSonic3で正しく動作するように見える構文があります。代わりに、オリジナルのポストからのLINQ式の

それ書き換え
 var post = from p in Post.All() 
        join q in Quote.All() on p.ID equals q.PostID into pq 
        where p.ID == id.Value 
        from qt in pq.DefaultIfEmpty() 
        select new {p, qt}; 

へ:

 var post = from p in Post.All() 
        from q in Quote.All().Where(x => x.PostID == p.ID).DefaultIfEmpty() 
        where p.ID == id.Value 
        select new {p, q}; 

がうまくいけば、これは誰かに役立ちます!