2012-04-13 188 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(); 
    }