Hi I have a problem with relationship between my tables. When i try to get values from table i have an error:
OrderDetails_Order_Target_OrderDetails_Order_Source: : The number of properties in the Dependent and Principal Roles in a relationship constraint must be identical. OrderDetails_Processor_Source: : Multiplicity is not valid in Role 'OrderDetails_Processor_Source' in relationship 'OrderDetails_Processor'. Because the Dependent Role refers to the key properties, the upper bound of the multiplicity of the Dependent Role must be '1'. OrderDetails_Processor_Target_OrderDetails_Processor_Source: : The number of properties in the Dependent and Principal Roles in a relationship constraint must be identical.
My classes and relationship look that:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Users>().HasKey(x => x.ID_User);
modelBuilder.Entity<Processor>().HasKey(x => x.Product_ID);
modelBuilder.Entity<GPU>().HasKey(x => x.Product_ID);
modelBuilder.Entity<Orders>().HasKey(x => new { x.Order_ID, x.User_ID });
modelBuilder.Entity<OrderDetails>().HasKey(x => new { x.Order_ID, x.Product_ID });
modelBuilder.Entity<OrderDetails>().HasRequired(x => x.Processor).WithMany(x => x.OrderDetails).HasForeignKey(x => new { x.Product_ID, x.Order_ID });
modelBuilder.Entity<OrderDetails>().HasRequired(x => x.GPU).WithMany(x => x.OrderDetails);
modelBuilder.Entity<OrderDetails>().HasRequired(x => x.Order).WithMany(x => x.OrderDetails);
modelBuilder.Entity<Orders>().HasMany(x => x.OrderDetails).WithRequired(x => x.Order);
modelBuilder.Entity<Orders>().HasRequired(x => x.User).WithMany(x => x.Orders);
modelBuilder.Entity<Processor>().HasMany(x => x.OrderDetails).WithRequired(x => x.Processor).HasForeignKey(x => new { x.Product_ID, x.Order_ID });
modelBuilder.Entity<GPU>().HasMany(x => x.OrderDetails).WithRequired(x => x.GPU);
modelBuilder.Entity<Users>().HasMany(x => x.Orders).WithRequired(x => x.User);
}
public class OrderDetails
{
public int Order_ID { get; set; }
public int Product_ID { get; set; }
public int Quantity { get; set; }
[ForeignKey(nameof(Product_ID))]
public Processor Processor { get; set; }
[ForeignKey(nameof(Product_ID))]
public GPU GPU { get; set; }
[ForeignKey(nameof(Order_ID))]
public Orders Order { get; set; }
}
public class Processor
{
[Key]
public int Product_ID { get; set; }
public string Title { get; set; }
public string Brand { get; set; }
public string Model { get; set; }
public ICollection<OrderDetails> OrderDetails { get; set; }
}
And here i get an error
public class EfProcessorContext : IProcessorRepository
{
private EfDbContext context = new EfDbContext();
public IEnumerable<Processor> Processors
{
get
{
return context.Processors.Include(x => x.OrderDetails);
}
}
}
What wrong I do?