C# 实体框架未写入连接表

C# 实体框架未写入连接表,c#,asp.net,.net,frameworks,entity,C#,Asp.net,.net,Frameworks,Entity,这是我创建的第一个真正的应用程序,所以请使用gentile 数据库包含一个名为APN且主键为APNID的表,另一个名为BGP且主键为BGPID的表。名为APNBGP的连接表,有两列充当由两个外键组成的复合键:APNID、BGPID。model.edmx文件确实显示了APN和BGP表之间的多对多关联 APN vtcApn = new APN(); BGP vtcBGP = new BGP(); vtcVlan.VlanID = Convert.ToInt32(ddVlans.SelectedVa

这是我创建的第一个真正的应用程序,所以请使用gentile

数据库包含一个名为APN且主键为APNID的表,另一个名为BGP且主键为BGPID的表。名为APNBGP的连接表,有两列充当由两个外键组成的复合键:APNID、BGPID。model.edmx文件确实显示了APN和BGP表之间的多对多关联

APN vtcApn = new APN();
BGP vtcBGP = new BGP();

vtcVlan.VlanID = Convert.ToInt32(ddVlans.SelectedValue);
vtcApn.APN_Name = apnName.Text;
vtcApn.PDP = PDP.Text;

vtcBGP.RemotePeer = vtcPriPeer.Text;
vtcBGP.RemoteAS = vtcPriAs.Text;

dbContext.APNs.AddObject(vtcApn);
dbContext.BGPs.AddObject(vtcBGP);
dbContext.SaveChanges();
运行应用程序时,它会将所有APN和BGP属性保存到数据库中,但不会更新APNBGP连接表。据我所知,EF将负责更新所有受影响的表。
提前谢谢

是的。告诉我。你到底在哪里告诉EF你的APN和BGP有关联?你没有

您通常会在每个页面上都有某种类型的集合。例如,您的APN实体上可能有一个BGPs集合。然后,您将执行以下操作:

vtcApn.BGPs.Add(vtcBGP);

这样您就不必将其添加到dbContext.BGPs中。

使用add方法而不是AddObject,如下所述:

dbContext.APNs.Add(vtcApn);
dbContext.BGPs.Add(vtcBGP);
dbContext.SaveChanges();

我没有dbContext.Add选项。我只得到AddObject,它在进行更改时生成运行时错误agter。我想我需要使用dbContext.Attach??