我在DbContext
课程中解决UserManager
时遇到问题。
这是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>();
有错误:
无法解析类型的服务 'MyContext'而 试图激活'UserManager'。
有谁知道问题出在哪里?
答案 0 :(得分:3)
DI 应使用您提供的代码解析MyContext
。已解决的实例不起作用(请参阅@Nikosi关于DbContextOptions的答案),但应该解析/创建。
检查您的项目是否有其他/第二MyContext
课程。我认为你有两个,可能在不同的命名空间。 &#34;转到声明&#34; MyContext
和Startup
文件中UserManager
的{Ctrl +单击VS' - 是否引用同一个类?
答案 1 :(得分:1)
文档:Using DbContext with dependency injection
EF支持将
public partial class Signature { protected override async void OnNavigatedTo(NavigationEventArgs e) { await myCanvas.RestoreStrokesAsync(ApplicationData.Current.SharedLocalFolder, "strokes.gif"); base.OnNavigatedTo(e); } protected override async void OnNavigatedFrom(NavigationEventArgs e) { await myCanvas.StoreStrokesAsync(ApplicationData.Current.SharedLocalFolder, "strokes.gif"); base.OnNavigatedFrom(e); } }
与依赖注入容器一起使用。 您可以使用DbContext类型添加到服务容器中DbContext
。
AddDbContext<TContext>
会添加两者您的AddDbContext
类型,DbContext
和TContext
可用 从服务容器注入。将dbcontext添加到依赖注入
DbContextOptions<TContext>
需要添加构造函数 接受
services.AddDbContext<MyContext>(options => options.UseSqlServer(Configuration["database:connectionString"]));
的DbContext类型的参数。
您在DbContext中缺少配置选项
DbContextOptions