sql >> データベース >  >> RDS >> Sqlserver

EF6-並列クエリを正しく実行する方法

    問題はこれです:

    EFは、同じDbContextオブジェクトを介した複数の要求の処理をサポートしていません。同じDbContextインスタンスでの2番目の非同期リクエストが最初のリクエストが終了する前に開始された場合(そしてそれが全体のポイントです)、リクエストが開いているDataReaderに対して処理中であるというエラーメッセージが表示されます。

    出典:https://visualstudiomagazine.com/articles/2014/04/01/async-processing.aspx

    コードを次のように変更する必要があります:

    async Task<List<E1Entity>> GetE1Data()
    {
        using(var MyCtx = new MyCtx())
        {
             return await MyCtx.E1.Where(bla bla bla).ToListAsync();
        }
    }
    
    async Task<List<E2Entity>> GetE2Data()
    {
        using(var MyCtx = new MyCtx())
        {
             return await MyCtx.E2.Where(bla bla bla).ToListAsync();
        }
    }
    
    async Task DoSomething()
    {
        var t1 = GetE1Data();
        var t2 = GetE2Data();
        await Task.WhenAll(t1,t2);
        DoSomething(t1.Result, t2.Result);
    }
    


    1. SQLPLUSを使用してコマンドラインでPL/SQLスクリプトに引数を渡すにはどうすればよいですか?

    2. テーブルにデータを入力する前、またはデータを配置した後にインデックスを作成する方がよいでしょうか。

    3. MicrosoftAccessフォームでドキュメントをプレビューする

    4. SQLite JSON_SET()