[英]EF Many-to-Many When Class Already Referenced as FK Not Working
我想创建一个实体框架many-to-many
的关系People
与Penguins
在平时的形式PenguinPeople
表保持Person_Id
和Penguin_Id
。 当我使用以下代码生成迁移时,不会创建many-to-many
。 但是,如果我注释掉企鹅类中的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 docs中概述的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");
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.