新しいC#5でL2Sを使用するベストプラクティスはthisのアプローチと比較してキーワードがasync/await
ですか?ウェブ上で何も見つかりませんでした。新しいasync/awaitと非同期にLinqを使用する
6
A
答えて
6
EF 5にはasync/awaitサポートはありませんが、オープンソース版ではここで可能性を検討しています。編集:EFでの非同期サポートはhttp://msdn.microsoft.com/en-us/data/jj819165.aspxに記載されています。 (RXで見つけたように)水和された結果をストリームしませんが、データベース呼び出しを非同期にします。
LINQ to SQLに関しては、Task.Factory.Start操作でリクエストをラップする以外に、非同期(非同期/待機用に必要)タスクがLinq用に実装されることを望んでいませんSQLへ。
絶対に必要な場合は、IQToolkitを使用して、独自の非同期サポートを追加して拡張することができます。また、MonoはLINQ to SQLを実装しており、非同期サポートで拡張することができます。
3
Scott Hanselmanはinteresting postを持っており、既存のLinq to SQLクエリの上に非同期APIを生成する方法を示しています。私はこのアイデアを持ちすぎずにいますが、同じテクニックをIQueryableやIEnumerable型のオブジェクトに拡張できる汎用的な拡張メソッドを作ることができると推測しています。
ここには彼の投稿から直接参照として使用するコードがあります。
SqlCommand _beginFindCmd = null;
public IAsyncResult BeginFind(int id, AsyncCallback callback, Object asyncState)
{
var query = from w in _db.Widgets
where w.Id == id
select w;
_beginFindCmd = _db.GetCommand(query) as SqlCommand;
_db.Connection.Open();
return _beginFindCmd.BeginExecuteReader(callback, asyncState, System.Data.CommandBehavior.CloseConnection);
}
public Widget EndFind(IAsyncResult result)
{
var rdr = _beginFindCmd.EndExecuteReader(result);
var widget = (from w in _db.Translate<Widget>(rdr)
select w).SingleOrDefault();
rdr.Close();
return widget;
}
少しの作業で、このTPLを作成し、同様に単一の非同期メソッドとしてより洗練されたものにすることができます。ちょうどこれをする機会があれば、私が思いつくものを投稿します。
関連する問題
- 1. LINQのと非同期ラムダ
- 2. async/await、RXとLINQを使用した非同期メッセージ処理
- 3. 非同期ルーチンを使用する新しいオブジェクト
- 4. 非同期メソッド非同期に新
- 5. 非同期 - 彼らは私がノードと非同期に新しいです
- 6. C#:LINQの非同期
- 7. JMSで同期メッセージと非同期メッセージを使用するタイミング
- 8. AJAXを使用しない非同期更新DIVレイヤー
- 9. 非同期機能を使用していないときに非同期エラーが発生しますか?
- 10. ピーウィー非同期予想外のキーワードピーウィー非同期を使用している間
- 11. javascriptを使用する非同期に
- 12. 非同期挿入と更新非同期挿入と更新:NoSqlとSQL
- 13. JavaScript:同期コードで非同期FileReaderを使用するには?
- 14. 非同期の値を同期的に使用する
- 15. Redux-thunk非同期アクション:非同期アクションにはカスタムミドルウェアを使用します
- 16. WPF非同期私は非同期イベントをクリックし使用しようとしている
- 17. 方法:LINQカスタム拡張メソッドで使用非同期メソッド
- 18. リクエストで非同期を使用する
- 19. LinqのSql非同期更新へのChangeConflictException
- 20. 非同期ツイスト通話を使用する同期クライアントのリファクタリング
- 21. CanBeNullとReSharper - 非同期タスクで使用していますか?
- 22. Mojoliciousを使用した非同期チャットサーバ
- 23. XCTestを使用した非同期メソッドテスト
- 24. async.jsを使用した非同期ツリートラバーサル
- 25. カーソルアダプタを使用した非同期リストビュー
- 26. NSURLConnectionを使用した非同期ダウンロードキュー
- 27. タスクを使用した非同期プログラミング
- 28. web2pyを使用した非同期バックグラウンドプロセス
- 29. lambdaを非同期コールバックとして使用する
- 30. 貧しいマンの非同期/を使用して非同期タイムアウトを実装する構造を待つ
ラッパーなどを作成することは可能でしょうか? Btw、最新のEFはasync/awaitをサポートしていますか? – UserControl