具有重复条目的多对多关系

2023-12-09

我正在尝试使用实体框架和 Fluent API 构建多对多关系,但我一直试图允许重复条目。这是我所拥有的:

public class Pizza
{
    public int PizzaId { get; set; }
    public virtual ICollection<Topping> Toppings { get; set; }
}

public class Topping
{
    public int ToppingId { get; set; }
}
  • 任何披萨都应该有多种配料。
  • 任何配料都可以应用于多个披萨。

So in OnModelCreating() I call:

modelBuilder.Entity<Pizza>()
            .HasMany(p => p.Toppings)
            .WithMany()
            .Map(m => m.ToTable("ToppingsForPizza"));

这给了我一个很好的多对多关系,但是问题是我希望披萨能够有多个相同配料的实例例如双意大利辣香肠

The ToppingsForPizza生成的数据库无法支持...我猜是因为需要有一个唯一的主键。

有没有办法做到这一点?

EDIT:我的实际问题与披萨无关,这只是我想出的例子。


您需要为多对多关系添加不同的主键。这意味着它本身就成为一个实体

public class PizzaTopping
{   
    public int PizzaToppingId { get; set; }
    public int PizzaId { get; set; }
    public int ToppingId { get; set; }

    public virtual Pizza Pizza { get; set; }
    public virtual Topping Topping { get; set; }
}

public class Pizza
{ 
     public int PizzaId { get; set; } 
     public virtual ICollection<PizzaTopping> PizzaToppings { get; set; }
}

public class Topping
{   
     public int ToppingId { get; set; }
     public virtual ICollection<PizzaTopping> PizzaToppings { get; set; }
}

适用于比萨饼和配料没有多大意义......;-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有重复条目的多对多关系 的相关文章

随机推荐