Лучший способ вставки/обновления данных динамической таблицы в базу данных с помощью Entity Framework

#entity-framework #asp.net-mvc-4

Вопрос:

У меня есть динамическая таблица, в которой пользователь может добавлять количество строк и редактировать их соответственно после сохранения. Допустим, изначально в БД было сохранено 3 строки данных, которые отображались следующим образом. Теперь, если пользователь добавит новую строку и обновит любые данные в существующих строках. Я хотел бы вставить новую строку и обновить существующие данные

введите описание изображения здесь

Я создал пользовательскую модель следующим образом

 public class Person
{
    public string Teacher { get; set; }
    public string ClassName { get; set; }
    public List<PersonDetail> PersonDetail { get; set; }
}

public class PersonDetail
{
    public int PersonId { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
}
 

Вот мой класс EF, который был создан в edmx при добавлении базы данных

 public partial class ClassInfo
{
    public string Teacher { get; set; }
    public string ClassName { get; set; }
    public virtual ICollection<PersonDetail> PersonDetails { get; set; }
}

public class PersonDetail
{
    public int PersonId { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public virtual ClassInfo ClassInfo { get; set; }
}
 

Я могу зацикливать и вставлять данные следующим образом

 public ActionResult SavePerson(Person person)
{
   using (var context = new DEVEntities())
   {
      List<EF.PersonDetail> PersonDetails = new List<EF.PersonDetail>();

      foreach(var p in person.PersonDetail)
      {
         EF.PersonDetail pd = new EF.PersonDetail();
         pd.Name = p.Name;
         pd.Email = p.Email;
         PersonDetails.Add(pd);
      }

      context.SaveChanges();
   }
}
 

Есть ли возможность сделать эту работу без зацикливания данных?

Комментарии:

1. Почему важно устранить цикл? Я бы предпочел, чтобы это сработало первым. Вы составляете этот PersonDetails список, но нигде его не используете.