记录未在linq中更新为sql

时间:2016-01-11 09:58:25

标签: c# asp.net linq linq-to-sql

以下是插入更新记录的常用方法,插入工作正常但更新不适用于以下内容:

代码:

Public void Save(Employee e)
{
 using (var context = new SchoolManagementDataContext())
   {
      if(e.id > 0)  //For Update Part
      {
         var data=context.Employee.FirstorDefault(x=>x.EmployeeId==e.eid);
         data.Employeename=e.name;
         //rest other fileds to update.
         context.SubmitChanges();
      }
      else
      {
         context.Employee.InsertonSubmit(e);
         context.SubmitChanges();
      }
   }
}

我不知道为什么,但记录没有得到更新。

2 个答案:

答案 0 :(得分:1)

你在if条件中输了一个拼写错误:

if(employee.id > 0)  // Not sure where employee is coming from

我猜这应该是:

if(e.id > 0)  // Update specified employee

答案 1 :(得分:1)

我认为,您需要UpdateOnSubmit()方法。试试这个:

Public void Save(Employee e)
{
 using (var context = new SchoolManagementDataContext())
   {
      if(e.id != null)  //For Update Part
      {
         var data=context.Employee.FirstorDefault(x=>x.EmployeeId==e.eid);
         data.Employeename=e.name;
         //rest other fileds to update.
         context.Employee.UpdateOnSubmit();
         context.SubmitChanges();
      }
      else
      {
         context.Employee.InsertonSubmit(e);
         context.SubmitChanges();
      }
   }
}

UpdateOnSubmit:

     public virtual void UpdateOnSubmit(T Entity)
     {
        myEntities.Attach(Entity);
        context.Entry(Entity).State = EntityState.Modified;
     }