2013-03-01 54 views
1

导航正在从地址,电话到人工作。我无法让人们获取任何导航地址或电话。在我的人的导航属性显示电话和地址为空。C#代码第一导航返回Null子元素

请指教。使用E.F 4.5

public class Person 
{ 
    [Key] 
    public int PersonID { get; set; } 
    [Required] 
    public string FirstName { get; set; } 
    [Required] 
    public string LastName { get; set; } 
    public string FullName 
    { 
     get 
     { 
      return string.Format("{0} {1}", this.FirstName, this.LastName); 
     } 
    } 
    public string Email { get; set; } 
    public virtual ICollection<Address> Address { get; set; } 
    public virtual ICollection<Phone> Phone { get; set; } 
} 

public class Phone 
{ 
    [Key] 
    public int PhoneID { get; set; } 
    public int PersonID { get; set; } 
    public virtual Person Person { get; set; } 
    [Required] 
    public string PhoneNum { get; set; } 
    [Required] 
    public int PhoneNumTypeID { get; set; } 
} 

public class Address 
{ 
    [Key] 
    public int AddressID { get; set; } 
    public int PersonID { get; set; } 
    public virtual Person Person { get; set; } 
    [Required] 
    public string Street { get; set; } 
    public int AddressTypeID { get; set; } 
    public virtual AddressType AddressType { get; set; } 
} 

public class AddressType 
{ 
    [Key] 
    public int AddressTypeID { get; set; } 

    [Required] 
    public string AddressTypeDesc { get; set; } 
} 

public class ContactContext : DbContext 
{ 
    public ContactContext() : base("Contact") { } 
    public DbSet<Person> People { get; set; } 
    public DbSet<Address> Addresses { get; set; } 
    public DbSet<Phone> Phones { get; set; } 
    public DbSet<AddressType> AddressTypes { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Address>() 
      .HasRequired(x => x.Person) 
      .WithMany() 
      .HasForeignKey(x => x.PersonID); 

     modelBuilder.Entity<Phone>() 
      .HasRequired(x => x.Person) 
      .WithMany() 
      .HasForeignKey(x => x.PersonID); 

     modelBuilder.Entity<Address>() 
      .HasRequired(x => x.AddressType) 
      .WithMany() 
      .HasForeignKey(x => x.AddressTypeID); 

     base.OnModelCreating(modelBuilder); 
    } 
} 

回答

0

改变映射:

modelBuilder.Entity<Address>() 
    .HasRequired(x => x.Person) 
    .WithMany(p => p.Address)   // changed here 
    .HasForeignKey(x => x.PersonID); 

modelBuilder.Entity<Phone>() 
    .HasRequired(x => x.Person) 
    .WithMany(p => p.Phone)   // changed here 
    .HasForeignKey(x => x.PersonID); 

顺便说一句,我会在Person属性重命名为复数形式(地址,电话)。