实体框架更新

时间:2012-04-13 14:40:31

标签: entity-framework

我知道如何使用entityframework进行更新,插入和删除,但在这种情况下我不知道该怎么做。

在这种情况下,我有3个表:表A表B和表AB有2列,一个是表A的外键,一个是表B的外键。

实体框架只显示表A和B,那么我如何只更新表AB的内容?

我尝试使用实体A和实体B中的引用,但它给了我一个例外,说实体集AB没有insert函数和delete函数。

4 个答案:

答案 0 :(得分:0)

您尝试制作

Public Virtual List<int> Ids

在你的“A”和“B”类中恢复所有关联

答案 1 :(得分:0)

对于插入,您将为表A创建一条记录,然后将表B记录添加到创建的插入A的项目中.EF将处理其余的。

 var tableA = new TableAtype { Description = "blah", etc.};
 tableA.TableBtype.Add(new TableBtype { Property1 = "foo", Property2 = "bar"};


 yourContext.AddToTableAtype(tableA);
 yourContext.SaveChanges();

答案 2 :(得分:0)

我将使用TheGeekYouNeed

提出的项目代码更具体
    public void ModificaAbilitazioni(int IdGruppoAnagrafica, List<DefAbilitazioni> AbilitazioniList)
    {            
        GruppiAnag gruppo = (from g in entities.GruppiAnags
                             where g.IdGruppoAnag == IdGruppoAnagrafica
                             select g).First();

        List<DefAbilitazioni> tutteAbilitazioni = GetTutteAbilitazioni();
        for (int i = 0; i < AbilitazioniList.Count; i++)
        {
            if (tutteAbilitazioni[i].GruppiAnags.Contains(gruppo))
            {
                tutteAbilitazioni[i].GruppiAnags.Remove(gruppo);
            }
        }

        foreach (DefAbilitazioni abilitazione in AbilitazioniList)
        {
            for (int i = 0; i < tutteAbilitazioni.Count; i++)
            {
                if (tutteAbilitazioni[i].IdAbilitazione == abilitazione.IdAbilitazione)
                {
                    tutteAbilitazioni[i].GruppiAnags.Add(gruppo);
                }
            }
        }
        entities.SaveChanges();
    } 

好的......这是

此方法应更改权限帐户。

首先,我使用他的身份恢复帐户,而不是恢复所有特权,如果在他们的参考中他们恢复了帐户,那么我将其从参考中删除。 这样帐户就没有任何特权。现在,我已经通过调用方法的特权和inri参考我把帐户。 (只是擦拭和补充,我现在只是尝试......)

我也正好反过来,擦除帐户中的特权引用并重新填充它们,但是两种方式都不起作用,在第一种情况下它说第三个实体(AB)没有插入功能

答案 3 :(得分:0)

我已经解决了这个问题,问题是我正在使用没有附加到数据库的对象,我已尝试过像这样的附件

        foreach (DefAbilitazioni abilitazione in abilitazioni)
        {   
            entities.Attach(abilitazione);
            gruppo.DefAbilitazionis.Add(abilitazione);   
        }

但它不起作用它说entitykey是null,也许如果有人给我一个使用附件的例子我将尝试更改我的代码,现在就像这样

    public void ModificaAbilitazioni(int IdGruppoAnagrafica, List<DefAbilitazioni> AbilitazioniList)
    {            
        GruppiAnag gruppo = (from g in entities.GruppiAnags
                             where g.IdGruppoAnag == IdGruppoAnagrafica
                             select g).First();

        IEnumerable<int> idAbilitazioni = from id in AbilitazioniList
                                          select id.IdAbilitazione;

        List<DefAbilitazioni> abilitazioni = (from abilitazione in entities.DefAbilitazionis
                                              where idAbilitazioni.Contains(abilitazione.IdAbilitazione)
                                              select abilitazione).ToList();

        gruppo.DefAbilitazionis.Clear();
        foreach (DefAbilitazioni abilitazione in abilitazioni)
        {   
            gruppo.DefAbilitazionis.Add(abilitazione);   
        }
        entities.SaveChanges();
    }      
相关问题