EF类已被引用为FK不工作时的多对多
本文关键字:工作 FK 引用 EF | 更新日期: 2023-09-27 18:00:16
我正试图在People
和Penguins
之间创建一个实体框架many-to-many
关系,其形式为通常的PenguinPeople
表,其中包含Person_Id
和Penguin_Id
。当我用下面的代码生成迁移时,many-to-many
不会被创建。然而,如果我注释掉Penguin类中的3行"OwnerId",many-to-many
就可以工作了。什么东西?他们应该是独立的。
public class Penguin
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public long OwnerId{ get; set; } //works if I comment this out
[ForeignKey("OwnerId")] //works if I comment this out
public Person Person{ get; set; } //works if I comment this out
public virtual ICollection<Person> PenguinTrainers{ get; set; }
}
public class Person
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public virtual ICollection<Person> People{ get; set; }
}
如果您有
ICollection<Penguin> AssignedPenguins { get; set; }
在您的Person类上,并且仅在两个类上的Id属性,则它应该创建关联表。
我不知道是否有更简单的方法可以做到这一点,但我不得不使用EF文档中概述的FluentAPI。这个例子只是来自文档,因为很明显,我的企鹅/人模型只是代替了真正导致问题的模型:
modelBuilder.Entity<Post>()
.HasMany(p => p.Tags)
.WithMany(t => t.Posts)
.Map(mc =>
{
mc.ToTable("PostTags");
mc.MapLeftKey("Post_Id");
mc.MapRightKey("Tag_Id");
});