Вам не нужно явно объявлять внешние ключи. По умолчанию код EF сначала создает отношение один к одному со ссылкой на объект, а отношение один ко многим - с набором ссылок на объект. Единственное, что требуется, это первичный идентификатор.
Теперь явное объявление внешних ключей может быть удобным, если необходимо сопоставить определенное поле или работать с внешними ключами без учета связей. В моем проекте я также угрожаю своим сущностям (моделям в вашем случае) как DTO. Поэтому я не хочу, чтобы отношения существовали. Я использую явные внешние ключи для загрузки в другие данные, такие как:
var student = service.GetStudent();
var class = service.GetClassById(student.ClassId);
Все зависит от требований, и код EF сначала дает вам прекрасный набор инструментов для понимания того, что вам нужно.