Mejoras al Modelo

Aqui les dejo algunas mejoras que en mi opinion hacen el modelo más mantenible y modificable:
1 - Las validaciónes del view model y el model/Database estaban out of sync. Resultado de la duplicación de codigo para la misma funcionalidad.
2 - Utilizar el nombre Id para todos los Ids no es realista en mi opinion.
3 - La magia de los migrations es buena, pero en pequeñas dosis y solo para cambios. La definición del modelo debe estar alojada en las clases del modelo y no enterrada en migrations. Este cambio permite tener toda la información JobOpportunities en su type.

Otros comentarios en el codigo.
En este caso en particular tu punto es válido. Pero en un sistema más realista no creo que esto sea apropiado, porque qué pasaria si JobOpportunities.Id es un foreign key en una entidad JobApplication, por ejemplo? como se llamaria ese FK field en JobApplication? como se reflejaria el FK en el schema?