我正在尝试创建People和Penguins之间的实体框架many-to-many关系,其形式是通常的包含Person_Id和Penguin_Id的PenguinPeople表。当我使用下面的代码生成迁移时,没有创建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; }
}发布于 2016-08-04 05:32:54
如果你有一个
ICollection<Penguin> AssignedPenguins { get; set; }在Person类上,并且只在两个类上都有Id属性,那么它应该创建关联表。
发布于 2016-08-05 02:35:39
我不知道是否有更简单的方法来做这件事,但我被迫使用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");
});https://stackoverflow.com/questions/38753703
复制相似问题