首页 > 解决方案 > 使用实体框架将动态表数据插入/更新到数据库的最佳方法

问题描述

我有一个动态表,用户可以在其中添加行数并在保存后相应地编辑它们。假设最初将 3 行数据保存到 db 并显示如下。现在,如果用户添加新行并更新现有行中的任何数据。我想插入新行并更新现有数据

在此处输入图像描述

我创建了自定义模型如下

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; }
}

这是我添加数据库时在 edmx 中生成的 EF 类

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

是否有可能在不循环数据的情况下完成这项工作?

标签: entity-frameworkasp.net-mvc-4

解决方案


推荐阅读