2016-06-14 3 views
1

У меня проблема с сохранением записей в моей таблице db из файла CSV. Кажется, что сохранить последнюю запись в таблицу базы данных в CSV-файле? Я несколько раз модифицировал код и не вижу, где я ошибаюсь?C# MVC Entity Framework сохраняет только последнюю строку

Я прошел через код и вижу, что записи успешно добавлены в List<location> list, а затем, наконец, добавлены в Entity 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(); 
    } 
    } 

ответ

3

Создать new object из Location внутри цикла. Вы объявили его вне цикла, и он получает только value из last row, поэтому только один object хранится в list и сохраняется только один.

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(); 
    } 
    } 
+0

Спасибо Mairaj за указание проблемы. Он отлично работает сейчас :) – Kevin

2

Перемещение Location loc = new Location(); внутри цикла Еогеаспа Вы перезапись его каждый раз, когда проходит цикл.

+0

Спасибо pparas Я вижу, где я сейчас неправ. Отлично работает сейчас :) – Kevin

Смежные вопросы