c#System.Data.Entity.Infrastructure.DbUpdateException插入新记录

c#System.Data.Entity.Infrastructure.DbUpdateException插入新记录,c#,linq,C#,Linq,我已经在我的应用程序中创建了一个导入系统 我从一个JSON的上传开始,这个JSON作为字符串从我的web服务接收,然后在一个名为tpp的对象中进行转换(我已经检查并正确创建和填充了我的对象) 然后我在数据库中插入一些内容: db.States.Add(tpp); db.SaveChanges(); 它很好用。然后,tpp包含cities,因此我使用以下代码: foreach (City curCity in tpp.Cities) { db.Cities.Add(curCity);

我已经在我的应用程序中创建了一个导入系统

我从一个JSON的上传开始,这个JSON作为字符串从我的web服务接收,然后在一个名为
tpp
的对象中进行转换(我已经检查并正确创建和填充了我的对象)

然后我在数据库中插入一些内容:

db.States.Add(tpp);
db.SaveChanges();
它很好用。然后,
tpp
包含
cities
,因此我使用以下代码:

foreach (City curCity in tpp.Cities)
   {
   db.Cities.Add(curCity);
   db.SaveChanges();
   }
在此
db.SaveChanges()
中,我收到一个关于保存外键的
System.Data.Entity.Infrastructure.DbUpdateException

tpp.Cities包含一个街道列表(
list Streets
,在我的City类中),但我稍后将它们保存在另一个表中,并且States也包含一个城市列表,但它不会引发异常


那么,当我在foreach循环中添加一个city时,为什么我的代码会返回一个异常呢?

如果POCO上的数据结构和传入的JSON是正确的,那么就不必手动添加子项了。从你的代码来看,它似乎是。因此,只要添加ttp.Cities.Streets,。。。等等。如果POCO上的数据结构和传入的JSON正确,则不必手动添加子项。从你的代码来看,它似乎是。因此,只要添加ttp.Cities.Streets,。。。等等。这将有助于查看Cities实体或表结构。您可以共享Cities实体类吗?这将有助于查看Cities实体或表结构。您可以共享Cities实体类吗?