2
我想用DI在我的api控制器中手動注入IDBConnection
。我知道我可以把它在構造函數中:在asp.net核心mvc6中手動注入服務?
public MyController(IDBConnection cnn) { this._Connection = cnn; }
或者我可以使用[FromServices]
屬性:
[FromServices]
public IDbConnection _Connection { get; set; }
而且我可以這樣使用它訪問量:
@inject IDbConnection cnn
什麼我真的想做的將是在using
,並讓DI打開連接,所以我可以做這樣的事情:
using (var cnn = Services.Inject<IDbConnection>()) {
// do something, don't worry about opening or closing
}
我聲明瞭它這樣的:
services.AddTransient<IDbConnection>(x =>
{
string connectionString = Configuration.Get<string>(
"Data:DefaultConnection:ConnectionString");
return new SqlConnection(connectionString);
});
我應該創建一個類從SqlConnection
調用它的構造Open()
繼承?我如何從那裏訪問Configuration
?我可以創建它,就像注入配置或連接字符串...是不是需要using
?基本上沒有創建實例的開銷,所以如果某些操作需要多個連接到不同的數據庫,這並不重要。