Это не так, как вы делаете DI (Dependency Injection). Всякий раз, когда вы видите ключевое слово new
для службы, вы должны знать, что это неправильно.
Во-первых, вам не нужно ничего передавать в DbContext, этого переопределения OnConfiguring
не должно быть, поскольку вы его не используете. Этот вызов позаботится об этой конфигурации:
services.AddDbContext<NavigationContext>(options => options.UseSqlServer(Configuration.GetConnectionString("NavigationLoggingDatabase")));
Во-вторых, вы не используете using
с внедренными зависимостями, поэтому:
public int Add(TEntity item)
{
_context.Set<TEntity>().Add(item);
_context.SaveChanges();
return item.Id;
}
И, чтобы это работало:
public class SomeController : Controller
{
private readonly NavigationContext _context;
public SomeController(NagivationContext context)
{
_context = context;
}
}
И, как последний совет, вы действительно должны использовать асинхронные версии методов Entity Framework Core как можно больше:
public async Task<int> Add(TEntity item)
{
_context.Set<TEntity>().Add(item);
await _context.SaveChangesAsync();
return item.Id;
}