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); 
}