如何解决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 举报,一经查实,本站将立刻删除。