![](/img/trans.png)
[英]ASP.NET Core 2.2 Integration Testing DbContext Service not registered
[英]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
類型,TContext
和DbContextOptions<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.