2

mvc 4 を使用して Web アプリケーションを構築しました。最初に、コンパイル済みクエリを使用せずにアプリケーションを実装しましたが、パフォーマンスを向上させるために、コンパイル済みクエリを使用したいと考えています。しかし、私はクエリを使用できませんDataContext。次のような多くのメソッドを持つクエリのクラスがあります。

    private static Func<DataContext, int, IEnumerable<Information>> _OwnInformations;
    public static List<Information> GetOwnInformations(DataContext dataContext, int userId)
    {
        if (_OwnInformations == null)
        {
            _OwnInformations = CompiledQuery.Compile<DataContext, int, IEnumerable<Information>>((dc, id) => (
                 from tm in dc.GetTable<Information>()
                 where tm.User.Id == id || tm.Author.Id == id
                 select tm
                 ));
        }
            return _OwnInformations.Invoke(dataContext, userId).Distinct().ToList();
    }

はクラスDataContextで作成および破棄されます。Controllerしたがって、コンパイルされたクエリを異なるDataContexts で使用できないという問題があります。DataContextまた、セッションに参加したくありません。

私の問題を解決するアイデアはありますか?

4

1 に答える 1

1

問題が見つかりました。テーブルと接続を含む独自の DataContext 部分クラスが必要でした。これで、コンパイル済みクエリを使用できるようになりました:)。

于 2014-01-27T13:33:57.740 に答える