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次以上。感谢
答案 0 :(得分:0)
不幸的是你做不到。在一对一关系的情况下,PK可能是FK,但是在一对多关系中,由于子表(MyEntityDetail表)的PK是唯一值,因此无法复制< / p>