C# 使用带有复合密钥的EF6 Fluent Api进行即时加载时,无法加载相关实体

C# 使用带有复合密钥的EF6 Fluent Api进行即时加载时,无法加载相关实体,c#,entity-framework-6,repository-pattern,eager-loading,ef-fluent-api,C#,Entity Framework 6,Repository Pattern,Eager Loading,Ef Fluent Api,我必须错误地创建了组合键,或者将其连接到了相关实体。我可以让它在一个简单的单键场景中工作,但是复合键失败了。我将显示工作版本和非工作版本 我的班级: public class Parts { public string PartID { get; set; } public string Revision { get; set; } } public class InstanceHistories { public int HistoryID { get; set; }

我必须错误地创建了
组合键
,或者将其连接到了
相关实体
。我可以让它在一个简单的单键场景中工作,但是
复合键
失败了。我将显示工作版本和非工作版本

我的班级:

public class Parts {
   public string PartID { get; set; }
   public string Revision { get; set; } 
}

public class InstanceHistories {
    public int HistoryID { get; set; }
    public string PartID { get; set; }
    public string Revision { get; set; }
    public virtual Parts Part { get; set; }
}
Fluent API-有效

 modelBuilder.Entity<Parts>().HasKey(p => new { p.PartID });

 modelBuilder.Entity<InstanceHistories>().HasKey(i => i.HistoryID);
 modelBuilder.Entity<InstanceHistories>().HasRequired(i => i.Part);
此repo调用将加载回我的相关零件对象,不会出现任何问题

当我更改Fluent API以使部件具有一个
复合键时,我的repo调用将不再返回
相关实体

非工作Fluent API更新

modelBuilder.Entity<Parts>().HasKey(p => new { p.PartID, p.Revision });
modelBuilder.Entity().HasKey(p=>new{p.PartID,p.Revision});
我尝试了一些不同的
。使用many()
。HasForeignKey()
。hasportional()
的场景,但似乎没有什么能真正让这个部分退步。我甚至尝试了
延迟加载
,但它们不会返回,所以我知道我的设置一定有问题。有人遇到过这种情况吗

编辑

即使我强制显示SQL(即
uow.Context.Database.Log=Console.WriteLine;),
我也会看到相关实体出现在连接结果中


此外,我没有收到任何错误。只需在Part对象上返回null。

发布的示例模型和配置都很好。在干净的环境(最新的EF6.1.3,SqlServer db)中进行测试,一切正常(填充了
部分
属性)。在你的真实场景中,有些事情必须有所不同。如果不提供可复制的样品,我看不出我们能帮上什么忙。哦,有趣。。。我将在一个干净的设置上重建,以查看是否得到相同的结果。谢谢@Ivanstoeva您在更改密钥后是否正在运行迁移?不运行任何EF迁移。您是否在数据库的parts表上设置了复合密钥?
modelBuilder.Entity<Parts>().HasKey(p => new { p.PartID, p.Revision });