2012-04-13 238 views
0

我知道如何更新,插入和删除与entityframework,但在这种情况下,我不知道该怎么做。实体框架更新

在这种情况下,我有3个表:表A中的表B和具有2列的表AB,一个是表A的foreing密钥和一个是表B的foreing键

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

我试过使用实体A和实体B中的引用,但它给了我一个异常,说实体集AB没有插入功能和删除功能。

回答

0

你尽量让

Public Virtual List<int> Ids 

在你的“A”和“B”类收回所有关联

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(); 
+0

感谢状,但我没有与刀片我有更新 – zizzi 2012-04-13 14:54:37

+0

问题描述你已经尝试什么,什么问题是问题。 – TheGeekYouNeed 2012-04-13 14:56:17

+0

我不能回答我的问题,我必须等待7个小时,我会保存我写的内容,并且我会在发布代码时发布。 – zizzi 2012-04-13 15:18:48

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

OK问...这里是

这种方法应该改变privilegies账户。

首先我使用他的ID恢复帐户,比我恢复所有的优惠,如果在他们的参考他们有帐户恢复,然后我从参考中删除它。 这种方式帐户没有任何优惠。现在我已经通过调用该方法的优势,并在theri参考我把账户。 (只是一个擦和笔芯我只是想现在...)

我也反过来,抹在帐户中的优惠引用,并重新填写它们,但在两种方式将无法正常工作,在第一个案例中说第三个实体(AB)没有插入功能

0

我已经解决了这个问题,问题是我正在处理的对象没有附加到数据库,我试过附装这样

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

,但它不工作,它说,是的EntityKey空,也许,如果有人给我使用attach我会尽力,现在更改我的代码的一个例子,我s此

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