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.
Aqui diferimos un poco. Yo prefiero que se llamen "Id". Ya el modelo se llama `JobOpportunity`, no creo que sea necesario encima de eso ponerle `JobOpportunityId` a la propiedad. 

Encima de que es más intuitivo entender que todas las entidades tienen el mismo nombre para el primary key (independientemente de que sea un Guid, un string, o un int)