如何首先在Entity Framework 5代码中使用两个外键创建主键?

我有一个实体,其中主键包含两个外键到另外两个表。 我有配置使用以下,但该表是使用两个FK引用生成的。

桌子:

domain.Entity1 MorePK (PK, FK, int, not null) Entity2_Id (PK, FK, int, not null) Entity3_Id (PK, FK, int, not null) OtherData (varchar, null) Entity2_Id1 (FK, int, null) Entity3_Id1 (FK, int, null) 

由以下内容生成:

 public Entity1 { public int MorePK { get; set; } public int Entity2_Id { get; set; } public int Entity3_Id { get; set; } public string OtherData { get; set; } public virtual Entity2 Entity2 { get; set; } public virtual Entity3 Entity3 { get; set; } } public Entity2 { public int Id { get; set; } public virtual List Entity1s { get; set; } } public Entity3 { public int Id { get; set; } public virtual List Entity1s { get; set; } } public class Entity1Config : EntityTypeConfiguration { HasKey(k => new { k.MorePK, k.Entity2_Id, k.Entity3_Id }); HasRequired(p => p.Entity2) .WithMany() .HasForeignKey(p => p.Entity2_Id); HasRequired(p => p.Entity3) .WithMany() .HasForeignKey(p => p.Entity3_Id); Property(x => x.Entity2_Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); Property(x => x.Entity3_Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); } 

如果我注释掉这条线

 public virtual List Entity1s { get; set; } 

在Entity2和Entity3然后它正确生成数据库,但我认为EF需要导航属性吗? 获取正确的数据库模式的正确方法是什么?

我想到了! 将此HasMany添加到外部实体配置:

 public Entity2Config : EntityTypeConfiguration { HasMany(x => x.Entity1s) .WithRequired(x => x.Entity2) .HasForeignKey(x => x.Entity2_Id); } public Entity3Config : EntityTypeConfiguration { HasMany(x => x.Entity1s) .WithRequired(x => x.Entity3) .HasForeignKey(x => x.Entity3_Id); }