我有一个EF6,MVC4数据库第一个Web应用程序。数据库模型定义了一些多对多关系,而.edmx模型以正确的方式显示它们。问题是当我尝试插入数据库时,我没有选择将相关的实体对象添加到正在创建的对象中。我可以在每个相关的表上进行单独插入,但是存储多对多关系的那个不会被写入。
这些是冲突的模型:
这是应该存储多对多关系的表的脚本:
CREATE TABLE [dbo].[funcionalidad_perfil] (
[funcionalidad_id] bigint NOT NULL,
[perfil_id] bigint NOT NULL)
我该如何将数据保存到" funcionalidad_perfil"表,如果它没有自动创建?
答案 0 :(得分:1)
在互联网上寻找答案一周后,我再次尝试,对我的代码进行了回滚并找到答案。它的尴尬是多么容易:
创建" perfil"对象(在创建" funcionalidad"之后),我所要做的就是设置" perfil"的属性。对象,使用方法添加,添加一个新的" funcionalidad"收集。
说明:从db创建实体时,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);
}