我知道如何使用entityframework进行更新,插入和删除,但在这种情况下我不知道该怎么做。
在这种情况下,我有3个表:表A表B和表AB有2列,一个是表A的外键,一个是表B的外键。
实体框架只显示表A和B,那么我如何只更新表AB的内容?
我尝试使用实体A和实体B中的引用,但它给了我一个例外,说实体集AB没有insert函数和delete函数。
答案 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();
}