(zh-TW)質問Dapperは、接続が使用されているときに暗黙的に接続が開かれることを期待しています。それはそれを開いたり閉じたりしないのですか?これは単に接続管理ですか?私は共同作業者であり、接続プーリングを使用して背後にあるものの性質について往復していて、複数のコマンド間で接続を開いたり、接続を開いたり閉じたりすることに何らかの利点がある場合各コマンドについて。Merge受け入れられた回答Dapperはこれを内部的に扱います(かなりの時間)。元の(古い)回答:あなたは間違っていません。私がこの不便さに気付かなかった理由は、従来の理由(具体的にはLINQ-to-SQLのみを使用していました)の主な接続のようなものがDataContextなので、dapperメソッドを拡張メソッドとして再公開しますDataContext。method}}ここでEnsureOpenは、次のようなすばらしいメソッドです。接続が開いている場合はnullを返します。それ以外の場合は、接続を開き、完了したら接続を閉じるIDisposableトークンを返しますだから私たちは明らかにあなたの痛みを正確に感じましたが、私たちはそれをさらに上に実装しました。機能リクエストとしてこれを記録してください。"リーダー"に合わせるために少し修正する必要があります)。これはdapperが所有権を取ることはできません。私はここで反対の答えを加えなければなりません。特定の状況でのみDapperが接続を別々に扱うかもしれないことを少なくとも示唆しています。api上でExecuteCommandメソッドに呼び出されます)にチェックがあり、接続が閉じられていないかどうかを確認します。私は、私の同僚のコードレビューが明示的にconnection.openを呼んでいないことを強調したので、DBにdapperを呼び出す前にそれを見ています。私の統合テストがすべて緑色だったので、これは選択されていませんでした。実行時にすべてが大変でした。私たちはDapperのコードに飛び込んだ。断言のために公開を呼び出す方が良いと主張することもできるが、反対に、より少ないコードほど良いと主張する人もいるかもしれない。