实体框架代码首先使用部分密钥进行自定义映射

时间:2011-12-13 19:27:41

标签: entity-framework-4 frameworks ef-code-first entity

是否可以使用Entity Framework Code First进行以下映射?

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; }
}

我想在我的dbcontext中指定一个关系,其中延迟将子项加载到Parent和Parent.statecode == Child.StateToCode中。请注意,StateToCode是Child键的一部分,而不是整个主键。如果可能的话,我应该在下面的数据库上下文中指定什么才能实现?

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

    }

1 个答案:

答案 0 :(得分:2)

这是不可能的 - 特别是不能首先使用代码,其中关系必须遵循与在数据库中指定引用约束完全相同的规则。因此唯一有效的关系将需要Parent表中Child的Id列和此列的外部约束