C#MVC实体框架仅保存最后一行

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

我无法将记录从CSV文件保存到我的db表中。它似乎只将最后一条记录保存到CSV文件中的数据库表中?我已经多次修改代码,看不出哪里出了问题

我已经浏览了代码,可以看到记录已成功添加到
列表
,然后最终添加到实体
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指出问题所在。现在工作正常:)