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 SQL Sería

`Orders`

|Columna   | Tipo  |
|---|---|
|Id   |Int (PK)   |
|CustomerId   |{FK)   |
|PurchaseDate   |DateTime   |

`Customers`

|Columna   |Tipo   |
|---|---|
|Id   |Integer (PK)   |
|nvarchar   |FirstName   |
|nvarchar   |LastName   |

### Todas las ordenes de un cliente
    
    SELECT * FROM Orders
    WHERE Orders.CustomerId = @CustomerId

### El cliente relacionado a una orden

    SELECT Customers.*
    FROM Customers INNER JOIN Orders
    ON Customers.Id = Orders.CustomerId

Como esto no sería intuitivo en SQL?