5

私は現在、ここ(および他のいくつかの場所)で言及されている問題を経験しています:Subsonic 3 Linq Projection Issue

これは3.0.0.4リリースパッケージを使用して発生します。また、GitHubから最新のものを取得してビルドしたときにも発生します。

LINQテンプレートを使用しています。

私はこのコードを持っています:

        var newModel = new ViewModels.HomeIndexViewModel() {
            PulseListViewModel = 
                new ViewModels.PulseListViewModel 
                {
                    Pulses = from p in _pulseQuery
                             join a in _accountQuery on p.AccountId equals a.AccountId
                             orderby p.CreateDate descending
                             select new PulseListViewModel.Pulse() 
                                {
                                      AccountName = a.Name
                                    , Category = p.Category
                                    , CreateDate = p.CreateDate
                                    , Link = p.Link
                                    , Message = p.Message
                                    , Source = p.Source
                                    , Title = p.Title
                                }
                }
        };

ただし、AccountNameは常にnullです。

AccountNameをNameに変更した場合:

        var newModel = new ViewModels.HomeIndexViewModel() {
            PulseListViewModel = 
                new ViewModels.PulseListViewModel 
                {
                    Pulses = from p in _pulseQuery
                             join a in _accountQuery on p.AccountId equals a.AccountId
                             orderby p.CreateDate descending
                             select new PulseListViewModel.Pulse() 
                                {
                                    Name = a.Name
                                    , Category = p.Category
                                    , CreateDate = p.CreateDate
                                    , Link = p.Link
                                    , Message = p.Message
                                    , Source = p.Source
                                    , Title = p.Title
                                }
                }
        };

正常に動作します。しかし、それは私たちのプロジェクトでは受け入れられません。私はいつも名前を並べることはできません(できれば物事がわかりにくくなるという事実を除いて)。

しかし、この問題は修正されたように見えるので、私はかなり混乱しています。

「プロジェクションがnullまたは空の設定を返す問題を修正しました」

--http ://blog.wekeroad.com/2010/03/21/subsonic-3-0-0-4-released

だから、誰かが私に言うことができます:この問題は修正されていません、そして私はこれを機能させるためにここにある変更をhttp://github.com/funky81/SubSonic-3.0/commit/aa7a9c1b564b2667db7fbd41e09ab72f5d58dcdbに適用する必要がありますか?または私は何かが欠けていますか。現在のSubSonicソースを調べると、この修正が含まれているようです。これはシンプルでうまくいくはずだと思いますが、その代わりに私はそれに途方もない時間を費やしました。

4

3 に答える 3

2

ここでの答えに従ってSubSonic.Coreを変更する場合:Subsonic3.0およびlinq

その後、投影は正しく機能します。

ただし、これはプロジェクトをフォークし、パフォーマンスを1桁低下させる必要があるため、非常に悪い解決策だと思います。

于 2010-06-24T18:21:03.160 に答える
2

この問題を修正できるように、もう少しコード(特に、_pulseQueryと_accountQueryの背後にあるもの)を送っていただけませんか。SimpleRepositoryまたはActiveRecordアプローチまたはQueryオブジェクトを直接使用していますか?

于 2010-06-29T05:20:52.973 に答える
1

ここで古いトピックを復活させますが、誰かが後でこれを検索した場合に備えて...

また、この同じ問題を「修正」し、コメントにいくつかの説明を入れました。このコミットのGitHubのフォーク:https ://github.com/rally25rs/SubSonic-3.0/commit/61af6aeb2ebb95f486d8df533bf13c8754d443e2

実際、ここにも少し深い問題があります。「標準の.NET組み込み」プロジェクションを使用することを選択した場合、SSはプロジェクション生成で.NETプロジェクションが実行しない追加の処理を実行するため、SubSonic単体テストの一部が失敗し始めます。 SSの期待される機能が機能しません。

個人的には、パフォーマンスの低下(速度の低下には気づいていませんが)は、正しいデータを購入するための小さな代償だと思います。

于 2011-05-06T14:04:08.677 に答える