我正在嘗試學習 asp.net core 6.0,并且我正在開發一個網站。我的網站需要一個 mysql 連接。我打開谷歌并開始搜索。我寫了一個代碼,它沒有任何問題;
using (var con = new MySqlConnection("server=127.0.0.1;user=dbuser;password=123456;database=gamedata")) {
con.Open();
MySqlCommand command = new MySqlCommand("SELECT * FROM userdata WHERE id=7", con);
var o = command.ExecuteReader();
if (o.Read()) {
Console.WriteLine(o["email"]);
}
}
但是在檔案中(不確定它是官方的)。有一個注冊服務的步驟。例如,我一直在搜索,幾乎所有檔案都說“這樣做”,沒有任何理由;
If using ASP.NET Core, you will want to register a database connection in Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddTransient<MySqlConnection>(_ => new MySqlConnection(Configuration["ConnectionStrings:Default"]));
}
這是必須的還是選擇的,我為什么要這樣做?為什么沒有這條線我的代碼仍然可以正常作業?
uj5u.com熱心網友回復:
此模式用于ASP.NET Core 中的依賴注入。您的啟動代碼提供了一種方法(使用AddTransient)在MySqlConnection需要時創建一個。然后,您的控制器或模型可以MySqlConnection通過在類建構式中接收一個來訪問 a。它被定義為Transient每個需要 aMySqlConnection的物件都接收一個新的(并且多個物件不共享同一個MySqlConnection)。
public class IndexModel : PageModel
{
private readonly MySqlConnection _connection;
public IndexModel(MySqlConnection connection)
{
_connection = connection;
}
public async Task OnGet()
{
await _connection.OpenAsync();
// ...
}
}
如果您不使用依賴注入,那么您不需要該ConfigureServices方法。大多數檔案“無緣無故地說‘這樣做’”,因為它只是假設這就是典型的 ASP.NET Core 6 Web 應用程式的創作方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/470997.html
