没有导航属性的一对多关系

时间:2012-01-26 13:15:39

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

public class MyEntity
{
    public int MyEntityID { get; set; }
    public int Foo { get; set; }


    public ICollection<MyEntityDetail> MyEntityDetails { get; set; }
}

public class MyEntityDetail
{
    [Key, Column(Order=0)]
    public int PK { get; set; } // this will be the MyEntityID from MyEntity
    [Key, Column(Order = 1)]
    public int OtherPK { get; set; } // this will be manually set
    public string Bar { get; set; }
}

public class MyEntityContext : DbContext
{
    public DbSet<MyEntity> MyEntities { get; set; }
    public DbSet<MyEntityDetail> MyEntityDetails { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}

我认为上面的代码解释了我试图用实体框架代码首先实现的4.2 请注意,MyEntityDetail不包含MyEntity的导航属性。我如何将MyEntity的MyEntityID与MyEntityDetail的PK相关联?如果我必须,我可以添加MyEntity导航属性到MyEntityDetail类,但我不想为我永远不会访问的属性使用额外的内存。这种类型的entites将在我的项目中使用100次以上。感谢

1 个答案:

答案 0 :(得分:0)

不幸的是你做不到。在一对一关系的情况下,PK可能是FK,但是在一对多关系中,由于子表(MyEntityDetail表)的PK是唯一值,因此无法复制< / p>