在數據訪問層內獲取Db上下文

asp.net-core asp.net-mvc c# entity-framework-core

我想解決EF-Core的一些問題。
我使用MVC Core應用程序中的啟動代碼來初始化db上下文。
這是我的數據庫上下文:

public class AccountsDBContext : DbContext
{
    public AccountsDBContext(DbContextOptions<AccountsDBContext> options)
        :base(options)
    {

    }

    // ...

}

和啟動代碼:

 public void ConfigureServices(IServiceCollection services)
 {
        // Inject the account db
        services.AddDbContext<AccountsDBContext>(options =>
           options.UseMySQL(Configuration.GetConnectionString("AccountsStore")));

        // ...

在所有示例中,我看到DB Context是通過構造函數傳遞給控制器(我假設通過依賴注入)並從那里傳遞到其他實體\層。

 [Route("api/[controller]")]
 public class AccountsController : Controller
 {
    private AccountsDBContext _db;

    public AccountsController(AccountsDBContext context)
    {
        this._db = context;
    }

但是,我不太喜歡db上下文將成為控制器成員的想法。
我真的更喜歡在數據訪問層中獲取db上下文,而不是將其傳遞到存儲庫類。
有沒有辦法在數據訪問層內部獲取上下文? (據我所知,沒有IServiceCollection,IApplicationBuilder,IServiceScopeFactory)

熱門答案

將您的存儲庫/ DAL實現注入控制器並將DbContext注入到repo構造函數中。只要註冊了相應的類,DI容器就會將其全部掛起



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow