从“EF模型上的关联表”插入和删除

时间:2014-06-10 18:24:34

标签: linq entity-framework

我需要表格" ALUMNOS"和" MATERIAS"。在SQL中存在另一个表" ALUMNOS BY MATERIAS"。我知道这在EF模型中不是必需的,因为存在属性导航。但是如何插入或删除这个"协会表" ??

提前致谢!! 吉尔

enter image description here

2 个答案:

答案 0 :(得分:0)

唯一的方法是在再次保存之前删除Materia和Alumno对象之间的链接。这样,它们就是单个对象,或者只包含所需的链接。这将正确设置映射表。

答案 1 :(得分:0)

创建表格,得到你喜欢的对象。要插入新行,请执行以下操作

StackExchangeExampleEntities exchangeExampleEntities = new StackExchangeExampleEntities();
        Alumno alumno = new Alumno() {AlumId = 2, Description = "aldesc"};
        Materia materia = new Materia() {materia_Id = 2, description = "mdesc"};
       materia.Alumnos.Add(alumno);// attach the relationship
       exchangeExampleEntities.Materias.Add(materia);
       exchangeExampleEntities.SaveChanges();

要删除映射表,我在一侧清理集合(您可以使用任一集合 - Alumno或materia)

StackExchangeExampleEntities exchangeExampleEntities = new StackExchangeExampleEntities();
        Materia materiaFetched = exchangeExampleEntities.Materias.Single(m => m.materia_Id == 2);
        materiaFetched.Alumnos.Clear();
        exchangeExampleEntities.SaveChanges();

如果您只想使用映射表,那么添加一个新的entityframework文件,然后只选择映射表(不要选择其他任何东西)。这将在上下文中为此映射表创建实体。 现在您可以像这样使用它:

 StackExchangeExampleEntities1 exchangeExampleEntities1 = new StackExchangeExampleEntities1();
        MateriaAlumono s = exchangeExampleEntities1.MateriaAlumonoes.First();
        Console.WriteLine(s.Alumuno_id);