0

我有一個EF6,MVC4數據庫第一個web應用程序。數據庫模型定義了多對多關係,而.edmx模型向他們展示了正確的方式。麻煩的是,當我嘗試插入數據庫時​​,我沒有選擇將相關實體對象添加到正在創建的對象。我可以在每個相關的表上創建單獨的插入,但是存儲多對多關係的那個不會寫入。管理EF6數據庫第一多對多關係

這些衝突機型:

enter image description here

這是表的應該很多存儲許多關係腳本:

CREATE TABLE [dbo].[funcionalidad_perfil] (
[funcionalidad_id] bigint NOT NULL, 
[perfil_id] bigint NOT NULL) 

我應該怎麼做才能將數據保存到「funcionalidad_perfil」表,如果它不是自動創建的?

回答

0

在網上尋找答案一週後,我再次嘗試,在代碼上做了回滾,並找到答案。令人困窘的是它有多容易:我創建一個「perfil」對象(創建「funcionalidad」之後),我所要做的就是使用Add方法設置「perfil」對象的屬性,爲集合添加一個新的「funcionalidad」。

說明:當從數據庫創建實體時,EF會在EntityCollection屬性中存儲它們兩者中的實體之間的多對多關係。所有需要使用它的是向該集合中添加一個新對象。在SaveChanges方法上,數據被保存到兩個表中,即保存新對象的那個表和存儲多對多關係的表。

代碼示例:

[HttpPost] 
public ActionResult Add(Perfil perfil) 
{ 
    if (ModelState.IsValid) 
    { 
     perfil.funcionalidad.Add(db.Funcionalidad.First()); 
     db.Perfil.AddObject(perfil); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    return View(perfil); 
}