Cześć,
Próbuje od kilku godzin rozgryźć w jaki sposób zrobić relacje many to many. Stworzyłem 2 proste klasy i próbuje przypisać produkt do klienta, ale niestety wyrzuca mi błąd. Czy mógłby mi ktoś wyjaśnić w jaki sposób stworzyć taką relację i przypisywać istniejące rekordy z jednej tabeli do drugiej ?
class Program
{
static void Main(string[] args)
{
using (Context db = new Context())
{
Product p = db.Product.Where(item => item.ProductId == 1).SingleOrDefault();
Customer c = db.Customer.Where(item => item.CustomerId == 1).SingleOrDefault();
c.Products.Add(p);
db.SaveChanges();
}
}
}
public class Customer
{
public int CustomerId { get; set; }
public string FirstName { get; set; }
public List<Product> Products { get; set; }
}
public class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public List<Customer> Customers { get; set; }
}
class Context : DbContext
{
public Context()
: base("name=ctx")
{
this.Configuration.AutoDetectChangesEnabled = false;
}
public DbSet<Customer> Customer { get; set; }
public DbSet<Product> Product { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>()
.HasMany(c => c.Products)
.WithMany(p => p.Customers)
.Map(m =>
{
m.ToTable("Orders");
m.MapLeftKey("CustomerId");
m.MapRightKey("ProductId");
});
}
}