2011-09-03 83 views
0

我有產品表和客戶表。因此他們之間有很多關係。這是我使用ModelBuilder創建這種關係的代碼:EF代碼中的多對多關係問題

modelBuilder.Entity<Customer>(). 
        HasMany(c => c.ProductsPurchased). 
         WithMany(p => p.Customers).Map(m => 
              m.MapLeftKey("CustomerId"). 
              MapRightKey("ProductId"). 
              ToTable("CustomersXProducts")); 

這裏的問題是Join表包含CustomerId和ProductId的主鍵。這基本上意味着一個客戶只能一次購買相同的產品。我該如何解決這個問題?我不希望CustomerId成爲我的連接表中的主鍵。

回答

1

無法解決數據庫問題。您通常需要一些額外的唯一列作爲聯結表的主鍵,或者您需要一些添加數據列來與CustomerIdProductId一起構成組合鍵。這將導致您的模型發生變化。您將需要expose junction table as an entity - CustomerProduct實體必須與新實體相關。

也許你會需要這個。在沒有任何額外數據的情況下建立這種關係並不常見。也許你的模型需要更大的改變。例如,客戶跟蹤系統通常使用某種形式的實體,如Customer,Order,OrderItem,Product,因此客戶和產品之間沒有直接關係。