0

我正在尝试在 EF 4.3 中创建这三个模型:

 - Family
  - Guid FamilyId
  - ICollection< Person> Members
 - Company
  - Guid CompanyId
  - ICollection< Person> Employees
 - Person
  - Guid PersonId
  - String Name

A person can belong to multiple families and multiple companies, as well as doesn't belong to any.

运行代码后,数据库中的映射似乎有点奇怪。未映射家庭成员和公司员工。此外,Persons 表中有四列:PersonId、Name、Family_FamilyId 和 Company_CompanyId。

我认为我的代码意味着一个人将永远属于 1 个家庭和 1 个公司。我应该如何更改代码?

4

2 回答 2

1

你不能像你想象的那样在你的课程中表达所有这些信息。要添加额外信息,您有几个选项。

您可以将其添加到您的 EF 上下文类

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{ 
    //All people must belong to a family.
    modelBuilder.Entity<Family>().HasMany(x => x.Members)
           .WithRequired();

    //Each person may belong to ZERO-Many companies.
    modelBuilder.Entity<Company>().HasMany(x => x.Employees)
           .WithMany();        
}

或者这个到你的 EF 上下文类

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{ 
    modelBuilder.Configurations.Add(new ComapnyMapper());
    modelBuilder.Configurations.Add(new FamilyMapper());

}

public class FamilyMapper : EntityTypeConfiguration<Family>
{
     public FamilyMapper()
     {
          HasMany(x => x.Members)
           .WithRequired();        
     }
}
public class CompanyMapper : EntityTypeConfiguration<Company>
{
     public CompanyMapper()
     {
          HasMany(x => x.Employees)
           .WithMany();        
     }
}
于 2013-10-12T10:17:28.853 回答
0

我最终将模型类更改为

  • 家庭
    • 指导家庭编号
    • ICollection<Person> 成员
  • 公司
    • 指导公司 ID
    • ICollection<人>员工
    • 指导人员 ID
    • 字符串名称
    • ICollection< 系列> 系列
    • ICollection<公司>公司
于 2013-10-12T10:40:47.010 回答