Entity framework 4 实体框架代码-使用部分键的第一个自定义映射

Entity framework 4 实体框架代码-使用部分键的第一个自定义映射,entity-framework-4,frameworks,ef-code-first,entity,Entity Framework 4,Frameworks,Ef Code First,Entity,是否可以先使用实体框架代码进行以下映射 public class Parent { [Key] public int ID {get; set;} public string statecode{get; set;} public virtual ICollection<Child> children{get; set;} } public class Child { [Key, Column(Order = 0)] pub

是否可以先使用实体框架代码进行以下映射

public class Parent
{
     [Key]
     public int ID {get; set;}
     public string statecode{get; set;}

     public virtual ICollection<Child> children{get; set;}
}

public class Child
{
    [Key, Column(Order = 0)]
    public string StateFromCode { get; set; }
    [Key, Column(Order = 1)]
    public string StateToCode { get; set; }
}
公共类父类
{
[关键]
公共int ID{get;set;}
公共字符串状态码{get;set;}
公共虚拟ICollection子项{get;set;}
}
公营儿童
{
[键,列(顺序=0)]
公共字符串StateFromCode{get;set;}
[键,列(顺序=1)]
公共字符串StateToCode{get;set;}
}
我想在dbcontext中指定一个关系,其中子对象被延迟加载到父对象和父对象中。statecode==Child.StateToCode。请注意,StateToCode是子键的一部分,而不是整个主键。如果可能的话,我应该在下面的DB上下文中指定什么来实现这一点

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.Entity<Parent>().HasMany(x=>x.children)..............

    }
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
基于模型创建(modelBuilder);
modelBuilder.Conventions.Remove();
modelBuilder.Entity()有许多(x=>x.children)。。。。。。。。。。。。。。
}

这是不可能的,尤其是对于“代码优先”(code first),关系必须遵循与在数据库中指定引用约束完全相同的规则。因此,唯一有效的关系将需要
子表中的
父项
的Id列以及该列上的外部约束

谢谢您的回答。我最终手动将children集合填充为“p.children=dbcontext.children.where(c=>c.StateToCode==p.statecode)”,并将集合从ICollection更改为[NotMapped]IEnumerable。这种情况仍然存在,还是较新版本提供了此功能?