簡體   English   中英

當類已經被引用為FK時EF多對多

[英]EF Many-to-Many When Class Already Referenced as FK Not Working

我想創建一個實體框架many-to-many的關系PeoplePenguins在平時的形式PenguinPeople表保持Person_IdPenguin_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM