Dapperがオープンな接続を必要としないのはなぜですか?

.net dapper

質問

Dapperのマニュアルには、 オープンな接続が必要であることが記載されています 。しかし、スティーブMichelottiのpluralsightコースでは、彼はSQLを実行する前に接続を開くことはありません、私はSQL ServerとMS Accessに接続する私の独自のテストがこれを確認した。

接続を手動で制御するのがベストプラクティスですか、これをDapperのままにしても問題ありませんか? Dapperが開かれた接続が提供されることを絶対に必要とする状況はありますか?

以下は、Accessデータベースに対して実行しているコードの例です。どの時点でも接続を開くことはできませんが、Dapperは喜んでFundオブジェクトのコレクションを返します。

Private ReadOnly _conn As IDbConnection = New OleDbConnection(ConnectionStrings.GetAccessConnectionString(ConnectionStrings.AccessVersion.v2003,
                                                                                                              ConfigurationManager.AppSettings("MSAccessLocation"), ""))
Public Function GetAll() As List(Of Fund) Implements IFundRepository.GetAll
        Return _conn.Query(Of Fund)("SELECT * FROM Funds").ToList()
End Function

人気のある回答

コメントには書式設定のオプションや最大長が限られているため、答えとして投稿することに決めました...私はTimSchmelterの提案で「フィールドとして接続をローカル変数として作成しないでください」。 dapperが接続を廃棄するかどうかにかかわらず、コードは必要がなくなったらすぐに破棄する必要があります。

この場合、

Public Function GetAll() As List(Of Fund) Implements IFundRepository.GetAll

    Using conn As IDbConnection = New DbConnection (_connectionString)

        Dim funds As List(Of Fund) = _conn.Query(Of Fund)("SELECT * FROM Funds").ToList()

        Return funds

    End Using

End Function


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow