Использование EF Core в веб приложении

appsettings.json
{
"ConnectionStrings": {
"DefaultConnection": "Host=127.0.0.1;Username=todolist_app;Password=secret;Database=todolist"
}
}
Setup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<TodoListContext>(options =>
options
.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"))
.UseSnakeCaseNamingConvention()
);
services.AddScoped<TodoItemService>()
// Other DI initializations ...
}
caution

Экземпляр класса DbContext "помнит" и отслеживает изменения модели, которое в него вносят. Так он может сформировать запросы в БД при вызове SaveChanges. Так как у него есть состояние, эго экземпляры создаются для для каждого запроса (срок жизни Scoped в DI контейнере). Следовательно, сервисы, которые от него зависят, тоже должны быть Scoped.

https://www.npgsql.org/efcore/modeling/table-column-naming.html

TodoItemService.cs
public class TodoItemService
{
private TodoListContext _context;
public TodoItemService(TodoListContext context)
{
this._context = context;
}
public Add(TodoItem item)
{
_context.Items.Add(item);
_context.SaveChanges();
}
}