簡體   English   中英

ASP.NET Core解決服務中的DbContext

[英]ASP.NET Core resolving DbContext in Service

我在UserManager類中解析DbContext時遇到問題。

這是UserManager類:

public class UserManager : IUserManager
{
    private readonly MyContext _context;

    public UserManager(MyContext context)
    {
        _context = context;
    }
 }

我的DbContext類:

public class MyContext: DbContext
{
    public DbSet<User> Users { get; set; }
}

啟動:

services.AddDbContext<MyContext>(options =>
      options.UseSqlServer(Configuration["database:connectionString"]));
//....
services.AddScoped<IUserManager, UserManager>();

有錯誤:

嘗試激活“ UserManager”時無法解析“ MyContext”類型的服務。

有人知道問題出在哪里嗎?

DI 應該使用您提供的代碼解析MyContext 解析的實例將不起作用(請參閱有關DbContextOptions的 @Nikosi答案),但應解析/創建它。

檢查您的項目是否有其他/第二個MyContext類。 我認為您有兩個,可能在不同的名稱空間中。 Startup文件和UserManager文件的MyContext “轉到聲明”(在VS中為Ctrl + Click)-它們是否引用相同的類?

文檔:結合使用DbContext和依賴項注入

EF支持將DbContext與依賴項注入容器一起使用。 您可以使用AddDbContext<TContext>將DbContext類型添加到服務容器中。

AddDbContext將增加使雙方DbContext類型, TContextDbContextOptions<TContext>到可以從服務容器注入。

將dbcontext添加到依賴項注入

services.AddDbContext<MyContext>(options =>
  options.UseSqlServer(Configuration["database:connectionString"]));

需要向您的DbContext類型添加一個接受DbContextOptions的構造函數參數。

您在DbContext中缺少配置選項

public class MyContext: DbContext {

    public MyContext(DbContextOptions<MyContext> options) : base(options) { }

    public DbSet<User> Users { get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM