2014-09-18 45 views
2

我想在服務層上使用Dapper。它應該如何處理IDbConnection?如何處理在Dapper中使用的連接?

我在一個MVC5項目中使用了StructureMap for IoC。

我可以將它注入服務器層類嗎?或者,也許一個DapperWrapper如下:

public class DapperWrapper { 

    private ConnectionString { get { return Settings.ConnectionString; } } 

    public IEnumerable<T> Query<T>(String sql, dynamic parameters = null) { 

    IEnumerable<T> result; 

    using (IDbConnection connection = new SqlConnection(_connection)) { 
     connection.Open(); 
     result = SqlMapper.Query<T>(connection, sql, parameters);   
    } 

    return result; 

    } // Query 

    // OTHER DAPPER METHODS 
} 
  1. 恐怕這種方式打開和關閉許多連接。這是一個問題嗎?

  2. 我應該在DapperWrapper中注入一個連接嗎?如果是這樣,怎麼辦?

這樣做的最好方法是什麼?

+0

有一些體面的解決方案在http://stackoverflow.com/questions/9218847/how-do-i-handle-database-connections-with-dapper-in-net – UtopiaLtd 2014-09-18 22:15:12

回答

2
  1. 只要啓用了連接池(用於SQL服務器是默認啓用)你是不是實際上打開和關閉連接 - 你是從/釋放到連接池中取出。它應該只需要幾微秒。

  2. 這完全是設計決定。注射工程。按需建設工程。在http請求的情況下,您通常也可以使用按需(延遲但緩存)的基於請求的連接存儲(只要確保在請求結束時處理它)。

相關問題