Зачем нужен класс DbContext?

Почему его обязательно наследовать? Можно ли обойтись как-то без него?

Данный класс определяет контекст данных, который будет использоваться для непосредственного взаимодействия с базой данных. Напрямую взаимодействовать с базой данных нельзя, посему нам нужно некое промежное звено. Таким звеном и является класс-контекст, который наследует класс DbContext.