繁体   English   中英

首先管理EF6数据库多对多关系

[英]Manage EF6 database first many to many relationship

我有一个EF6,MVC4数据库第一个Web应用程序。 数据库模型定义了许多对许多的关系,.edmx模型向他们展示了正确的方式。 问题是,当我尝试在数据库中进行插入时,没有选择将相关的实体对象添加到正在创建的对象中的选择。 我可以在每个相关的表上单独插入,但没有编写存储多对多关系的表。

这些是相互矛盾的模型:

在此处输入图片说明

这是表的脚本,应存储多对多关系:

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

如果不是自动创建的,该如何将数据保存到“ funcionalidad_perfil”表中?

经过一个星期在互联网上寻找答案之后,我再次尝试,回滚了我的代码并找到了答案。 真让人难为情:

创建“ perfil”对象时(创建“ funcionalidad”之后),我要做的就是使用“添加”方法设置“ 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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM