C#MVC实体框架仅保存最后一行
我无法将记录从CSV文件保存到我的db表中。它似乎只将最后一条记录保存到CSV文件中的数据库表中?我已经多次修改代码,看不出哪里出了问题 我已经浏览了代码,可以看到记录已成功添加到C#MVC实体框架仅保存最后一行,c#,entity-framework,csv,C#,Entity Framework,Csv,我无法将记录从CSV文件保存到我的db表中。它似乎只将最后一条记录保存到CSV文件中的数据库表中?我已经多次修改代码,看不出哪里出了问题 我已经浏览了代码,可以看到记录已成功添加到列表,然后最终添加到实体AddRange 有什么建议吗 public void SaveFilesDetails(DataTable dt) { Location loc = new Location(); List<Location> list = new List<Locati
列表
,然后最终添加到实体AddRange
有什么建议吗
public void SaveFilesDetails(DataTable dt)
{
Location loc = new Location();
List<Location> list = new List<Location>();
foreach (DataRow row in dt.Rows)
{
loc.Postcode = row["Postcode"].ToString();
loc.Latitude = row["Latitude"].ToString();
loc.Longitude = row["Longitude"].ToString();
loc.County = row["County"].ToString();
loc.District = row["District"].ToString();
loc.Ward = row["Ward"].ToString();
loc.CountryRegion = row["CountryRegion"].ToString();
list.Add(loc);
}
using (PostCodesEntities dataContext = new PostCodesEntities())
{
dataContext.Locations.AddRange(list);
dataContext.SaveChanges();
}
}
public void保存文件详细信息(DataTable dt)
{
位置loc=新位置();
列表=新列表();
foreach(数据行中的数据行)
{
loc.Postcode=行[“Postcode”].ToString();
位置纬度=行[“纬度”]。ToString();
位置经度=行[“经度”].ToString();
loc.country=行[“country”].ToString();
loc.District=行[“District”].ToString();
loc.Ward=行[“Ward”].ToString();
loc.CountryRegion=行[“CountryRegion”].ToString();
列表。添加(loc);
}
使用(邮政编码实体dataContext=新邮政编码实体()
{
dataContext.Locations.AddRange(列表);
dataContext.SaveChanges();
}
}
创建循环内位置的新对象。您已经在循环外声明了它,并且它只获得最后一行的值
,因此列表中只存储了一个对象
,并且只保存了一个
public void SaveFilesDetails(DataTable dt)
{
List<Location> list = new List<Location>();
foreach (DataRow row in dt.Rows)
{
Location loc = new Location();
loc.Postcode = row["Postcode"].ToString();
loc.Latitude = row["Latitude"].ToString();
loc.Longitude = row["Longitude"].ToString();
loc.County = row["County"].ToString();
loc.District = row["District"].ToString();
loc.Ward = row["Ward"].ToString();
loc.CountryRegion = row["CountryRegion"].ToString();
list.Add(loc);
}
using (PostCodesEntities dataContext = new PostCodesEntities())
{
dataContext.Locations.AddRange(list);
dataContext.SaveChanges();
}
}
public void保存文件详细信息(DataTable dt)
{
列表=新列表();
foreach(数据行中的数据行)
{
位置loc=新位置();
loc.Postcode=行[“Postcode”].ToString();
位置纬度=行[“纬度”]。ToString();
位置经度=行[“经度”].ToString();
loc.country=行[“country”].ToString();
loc.District=行[“District”].ToString();
loc.Ward=行[“Ward”].ToString();
loc.CountryRegion=行[“CountryRegion”].ToString();
列表。添加(loc);
}
使用(邮政编码实体dataContext=新邮政编码实体()
{
dataContext.Locations.AddRange(列表);
dataContext.SaveChanges();
}
}
移动位置loc=新位置()代码>在foreach循环中,每次循环运行时都会覆盖它。谢谢,我现在知道我错在哪里了。现在效果很好:)谢谢Mairaj指出问题所在。现在工作正常:)