我正在將項目的數據訪問部分移至WebAPI,並使用Entity Framework Core來完成EF所做的工作。使用存儲庫模式實現依賴注入的混亂-c#EF Core
我知道當使用「控制器」時,首選模式現在依賴依賴注入來創建dbContext。 「你好,世界!」教程顯示通過訪問上下文的例子如下:
private BloggingContext _context;
public BlogsController(BloggingContext context)
{
_context = context;
}
說我遇到的問題是我需要去一層了......因爲我有一個「服務」接口暴露的方法庫。
我試圖把上下文實例進入我的倉庫,但是,當然了,然後當我嘗試新的了服務的一個實例,它需要上下文對象中進行傳遞。我試圖通過發送解決它在一個新的BloggingContext()作爲上下文參數,但收到錯誤:No database provider has been configured for this DbContext.
這當然是有道理的,因爲我傳遞的new
沒有連接到與其關聯的數據庫。這個連接在Startup.cs中定義,正如我在下面試圖在這個轉換中削減我的牙齒所描述的各種教程中所述。
因此,在我的控制器中給出以下代碼,我該如何調用服務並仍然讓依賴注入執行它在存儲庫級別設計的功能?
[HttpGet("{bool}")]
public IActionResult GetRoleNames(bool? isActive)
{
var service = new SecurityService();
try
{
return Ok(service.GetRoleNames(isActive));
}
catch (Exception ex)
{
Log.Error("Failed to get list of role names from the API", ex.Message);
return BadRequest(ex);
}
}
我敢肯定,我有[HttpGet("{bool}")]
有點FUBARd,以及因爲GetRoleNames
將允許NULL,但解決問題的DI後,我會船到橋頭。
錯字,改變屬性'[HTTPGET( 「{isActive?}」)]'當你達到這個橋 – Nkosi
謝謝,@Nkosi ......我很欣賞的,一個幫助!我想它會咬下我。 – rcastagna