EF6 Code First 多对多关系问题

问题描述

我正在尝试创建一个带有额外列的多对多关系表。所以有下面的场景,只是一个例子来说明。一个人可以属于很多公司,公司可以有很多人。

public class Person
{
    public Person()
    {
        PersonsCompanies = new HashSet<PersonCompany>();
    }
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public virtual ICollection<PersonCompany> PersonsCompanies { get; set; }
}


public class PersonMap : EntityTypeConfiguration<Person>
{
    public PersonMap()
    {
        Property(p => p.FirstName)
            .HasMaxLength(30)
            .Isrequired();
            
        Property(p => p.LastName).HasMaxLength(30);           
       
        HasMany(p => p.PersonsCompanies)
           .Withrequired()
           .HasForeignKey(pc => pc.PersonId);

    }
}

public class Company
{
    public int CompanyId { get; set; }
    public string Name { get; set; }
    public Company()
    {
        PersonsCompanies = new HashSet<PersonCompany>();
    }
    public virtual ICollection<PersonCompany> PersonsCompanies { get; set; }

}

public class CompanyMap : EntityTypeConfiguration<Company>
{
    public CompanyMap()
    {
        HasMany(c => c.PersonsCompanies)
           .Withrequired()
           .HasForeignKey(pc => pc.Companyid);
    }        
}

public class PersonCompany
{
    public int PersonId { get; set; }
    public int Companyid { get; set; }
    public DateTime? HireDate { get; set; }

    public virtual ICollection<Person> Persons { get; set; }
    public virtual ICollection<Company> Companies { get; set; }
}

public class PersonCompanyMap : EntityTypeConfiguration<PersonCompany>
{
   public PersonCompanyMap()
    {
        HasKey(pc => new { pc.CompanyId,pc.PersonId });
    }
}

表 Person 和 Company 似乎各有 2 个额外的列 - [PersonCompany_CompanyId] [int] NULL, [PersonCompany_PersonId] [int] NULL,

似乎是什么问题?

另外,如何填充条目?我有

var person = new Person { FirstName = "John",LastName = "Doe"};
person.PersonsCompanies.Add(new PersonCompany { CompanyId = 1,HireDate 
 = DateTime.Now });
 context.Persons.Add(person);

谢谢,

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)