Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未在linq到sql中更新记录_C#_Asp.net_Linq_Linq To Sql - Fatal编程技术网

C# 未在linq到sql中更新记录

C# 未在linq到sql中更新记录,c#,asp.net,linq,linq-to-sql,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.EmployeeI

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

代码:

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

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

我认为,您需要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();
      }
   }
}
更新提交:

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

您能否启动sql事件探查器并查看是否发出了\什么sql语句?当您按ID筛选数据时,请养成使用
SingleOrDefault
而不是
FirstorDefault
的习惯,当ID是主键时,通常使用
SingleOrDefault
。您已经购买了model
Employee e
作为参数,因此在
If..Else
子句中,这必须是
e.id
而不是
Employee.id
@SuprabhatBiswal:是的,我已经根据这一点更新了我的问题,但问题仍然是记录没有更新Employee是数据库表的模型吗?使用不同的变量名称似乎有些奇怪:
data.Employeename=e.name。您是否已调试以验证是否返回了有效的员工记录(变量
data
)?是的Employee是数据库表的模型,是的,我已调试在数据变量中返回有效的Employee没有可用的方法:UpdateOnSubmit我没有使用实体框架。我正在使用linqtosql,因此此方法attach在linqtosqlOh中不可用,抱歉。也许你可以控制这篇文章[.我知道这是一个非常常见的更新错误。