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
。您已经购买了modelEmployee e
作为参数,因此在If..Else
子句中,这必须是e.id
而不是Employee.id
@SuprabhatBiswal:是的,我已经根据这一点更新了我的问题,但问题仍然是记录没有更新Employee是数据库表的模型吗?使用不同的变量名称似乎有些奇怪:data.Employeename=e.name代码>。您是否已调试以验证是否返回了有效的员工记录(变量data
)?是的Employee是数据库表的模型,是的,我已调试在数据变量中返回有效的Employee没有可用的方法:UpdateOnSubmit我没有使用实体框架。我正在使用linqtosql,因此此方法attach在linqtosqlOh中不可用,抱歉。也许你可以控制这篇文章[.我知道这是一个非常常见的更新错误。