У меня был шаблон Repository и UnitOfWork в проекте ASP.Net MVC, и теперь я хочу переместить его в мой проект ASP.Net Core, который получает контекст в классе UnitOfWork.
Класс контекста:
public class LoginContext:DbContext
{
public LoginContext(DbContextOptions<LoginContext> options)
: base(options)
{
}
public DbSet<Person> People { get; set; }
<..other classes..>
}
Общий репозиторий:
public class GenericRepository<TEntity> where TEntity : class
{
private LoginContext _context;
private DbSet<TEntity> _entityTable;
public GenericRepository(LoginContext context)
{
_context = context;
_entityTable = context.Set<TEntity>();
}
public virtual async Task<TEntity> GetInfo(int id)
{
return await _entityTable.FindAsync(id);
}
<... Other Methods ...>
UnitOfWork
public class AccountProvider : IUnitOfWork
{
private readonly LoginContext loginContext;
private GenericRepository<Person> personRepository;
<... and Others ...>
}
Кроме того, у меня есть connectionString в моем appsettings.json :
"ConnectionStrings": {
"LoginContext": "Server=.\\MYSQLSERVER;Database=<DatabaseName>;Integrated Security=True;Trusted_Connection=True;"}
и метод ConfigureServices в startup.cs :
services.AddDbContext<LoginContext>(options => options.UseSqlServer(Configuration.GetConnectionString("LoginContext")));
Теперь в контроллере я получаю экземплярAccountProvider (UnitOfWork) и хотите использовать его:
[Route("api/[controller]")]
[ApiController]
public class LoginController : ControllerBase
{
private readonly AccountProvider _accountProvider;
public LoginController(AccountProvider account)
{
_accountProvider = account;
}
<... methods ...>
}
Когда я запускаю проект и отправляю запрос контроллеру, я получаю исключение, подобное этому:
InvalidOperationException: Невозможно выполнитьразрешить службу для типа «DataLogin.Context.AccountProvider» при попытке активировать «MyProject.Controllers.LoginController»
Я знаю, что проблема заключается в получении контекста в контроллере, и попробуйте просмотреть Интернет дляШаблон UnitOfWork в .Net Core. Но неПожалуйста, ведите меня ..