La propriété doit être valide, le type d'entité et de la propriété doit avoir un non-abstraite getter et setter. Entity Framework

J'ai un problème en ce qui concerne la création d'une base de données de code de la première dans le cadre de l'entité. J'ai trois classes 1 Personne, 2 PersonAddress, 3 PersonEmploymentHistory comme indiqué ci-dessous.

namespace DataAccess.Models
{
[Table("Profile")]
public class Person
{
    [Key]
    public int UserId { get; set; }

    [Required(ErrorMessage = "Firstname is required")]
    public string PersonFirstName { get; set; }

    [Required(ErrorMessage = "Surname is required")]
    public string PersonSurname { get; set; }

    [Required(ErrorMessage = "Email is required")]
    [DataType(DataType.EmailAddress)]
    public string PersonEmail { get; set; }
    public int Age { get; set; }

    [Required(ErrorMessage = "Contact Number required")]
    public Int64 PersonNumber { get; set; }

    public bool IsActive { get; set; }

    [ForeignKey("AddressDetails")]
    public int AddressId { get; set; }
    public virtual PersonAddress AddressDetails { get; set; }

    [ForeignKey("EmploymentHistory")]
    public int EmployerId { get; set; }
    public virtual PersonEmploymentHistory EmploymentHistory { get; set; }

}
}

PersonAddress Classe

namespace DataAccess.Models
{
[Table("AddressDetails")]
public class PersonAddress
{
    [Key]
    public int AddressId { get; set; }

    [ForeignKey("UserId")]
    public int UserId { get; set; }

    [Required(ErrorMessage = "Address Line 1 required")]
    public string AddressLine1 { get; set; }

    [Required(ErrorMessage = "Address Line 2 required")]
    public string AddressLine2 { get; set; }

    [Required(ErrorMessage = "Postcode required")]
    [DataType(DataType.PostalCode)]
    public string PostCode { get; set; }
}
}

PersonEmploymentHistory

namespace DataAccess.Models
{
[Table("EmploymentHistory")]
public class PersonEmploymentHistory
{
    [Key]
    public int EmployerId { get; set; }
    public string EmployerName { get; set; }
    public decimal EmployeeSalary { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
    public string ReasonForLeaving { get; set; }

    [ForeignKey("UserId")]
    public int UserId { get; set; }
}
}

Et c'est ma classe de Contexte

 public class Context : DbContext
{
    public Context()
        : base("DefaultConnection")
    {
        Database.SetInitializer<Context>(new CreateDatabaseIfNotExists<Context>());
    }

    public DbSet<Person> Person { get; set; }
    public DbSet<PersonAddress> PersonAddress { get; set; }
    public DbSet<PersonEmploymentHistory> PersonEmployment { get; set; }

}

Maintenant, j'ai suivi des tutoriels lors de la création de clés étrangères, etc, mais quand je lance mon projet et d'essayer d'insérer des données dans la table personne j'obtiens l'erreur suivante

La propriété 'UserId' ne peut pas être configuré comme une propriété de navigation. La propriété doit être valide, le type d'entité et de la propriété doit avoir un non-abstraite getter et setter. Pour les propriétés de collection le type doit mettre en œuvre ICollection où T est valide d'un type d'entité.

InformationsquelleAutor Code Ratchet | 2014-10-25