0

產生我必須通過流暢的API生成的表如下:EF6:訪問映射表,通過代碼第一流利的API

modelBuilder.Entity<Person>() 
.HasMany(m => m.Friends) 
.WithMany() 
.Map(w => w.ToTable("Friendship").MapLeftKey("PersonID").MapRightKey("FriendID")); 

而這個工作正常,表正確生成。但在我的數據訪問層中,如何通過實體框架在此表上的「友誼」上執行CRUD功能?因爲我不能做這樣的事情:

db.Friendships.Add(entity); 

因爲「友誼」是不是在我的DbContext定義。

解決此問題的最佳方法是什麼?在數據訪問層中手動創建模型或硬編碼SQL查詢?還是另一種解決方案

回答

2

您不能直接訪問友誼實體,因爲它不存在。實體框架處理多對多關係的方式,友誼表不可見並且從不建模。如果您希望將其作爲實體提供,則必須將實體顯式添加到模型中,並用兩個一對多關係替換多對多關係。

如果您所要問的是如何在多對多實體框架中創建實體之間的關係,它應該像添加對集合的引用一樣簡單。

如果Person1Person2是實體,那麼Person1.Friends.Add(Person2)應該做的伎倆。