C# 无法将LINQ中的记录更新为SQL
需要使用LinQ更新记录方面的帮助 我尝试更新记录,但它没有显示在数据库中 主键在db和LinQ dbml文件中都设置 代码如下:C# 无法将LINQ中的记录更新为SQL,c#,.net,linq,linq-to-sql,C#,.net,Linq,Linq To Sql,需要使用LinQ更新记录方面的帮助 我尝试更新记录,但它没有显示在数据库中 主键在db和LinQ dbml文件中都设置 代码如下: RPHContrib _phContrib = new RPHContrib(); _phContrib.PHTableNo = phContrib.PHTableNo; _phContrib.AmountFrom = phContrib.AmountFrom; _phContrib.AmountTo = phContrib.AmountTo; _phContrib
RPHContrib _phContrib = new RPHContrib();
_phContrib.PHTableNo = phContrib.PHTableNo;
_phContrib.AmountFrom = phContrib.AmountFrom;
_phContrib.AmountTo = phContrib.AmountTo;
_phContrib.EmployeePH = phContrib.EmployeePH;
_phContrib.EmployerAmt = phContrib.EmployerAmt;
_phContrib.IsActive = phContrib.IsActive;
_phContrib.CreatedByNo = phContrib.CreatedByNo;
_phContrib.CreatedDate = phContrib.CreatedDate;
_phContrib.ModifiedByNo = SessionStateController.OnlineUserNo;
_phContrib.ModifiedDate = DateTime.Now;
LINQHelper.Instance.GenericDataContext<HRWizardDataContext>(GetDataContext(false));
LINQHelper.Instance.Update<RPHContrib>(_phContrib);
public bool Update<T>(T obj) where T : class, ICommon, new()
{
using (var db = GetDBDataContext())
{
db.Connection.Open();
DbTransaction trans = db.Connection.BeginTransaction();
db.Transaction = trans;
// Populate object log
obj.IModifiedDate = DateTime.Now;
try
{
Detach<T>(obj); // Detach LINQ entity from the original DataContext before attaching to the new one
db.GetTable<T>().Attach(obj, true);
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
// TODO: Put error logging code here
throw ex;
}
finally
{
if (db.Connection != null)
{
db.Connection.Close();
db.Connection.Dispose();
}
}
}
return true;
}
RPHContrib\u phContrib=新的RPHContrib();
_phContrib.PHTableNo=phContrib.PHTableNo;
_phContrib.AmountFrom=phContrib.AmountFrom;
_phContrib.AmountTo=phContrib.AmountTo;
_phContrib.EmployeePH=phContrib.EmployeePH;
_phContrib.employeeramt=phContrib.employeeramt;
_phContrib.IsActive=phContrib.IsActive;
_phContrib.CreatedByNo=phContrib.CreatedByNo;
_phContrib.CreatedDate=phContrib.CreatedDate;
_phContrib.ModifiedByNo=SessionStateController.OnlineUserNo;
_phContrib.ModifiedDate=DateTime.Now;
GenericDataContext(GetDataContext(false));
LINQHelper.Instance.Update(_phContrib);
公共bool更新(T obj),其中T:class,ICommon,new()
{
使用(var db=GetDBDataContext())
{
db.Connection.Open();
DbTransaction=db.Connection.BeginTransaction();
db.Transaction=trans;
//填充对象日志
obj.IModifiedDate=日期时间.Now;
尝试
{
Detach(obj);//在附加到新数据上下文之前,从原始数据上下文中分离LINQ实体
db.GetTable().Attach(obj,true);
db.SubmitChanges();
db.Transaction.Commit();
}
捕获(例外情况除外)
{
db.Transaction.Rollback();
//TODO:将错误日志记录代码放在此处
掷骰子;
}
最后
{
if(db.Connection!=null)
{
db.Connection.Close();
db.Connection.Dispose();
}
}
}
返回true;
}
您需要执行insertonsubmit(obj)代码>在提交更改()之前代码>您需要执行insertonsubmit(obj)代码>在提交更改()之前代码>添加新记录时,请使用插入提交(实体)
,之后调用SubmitChanges()后,对象上的任何自动编号(如主编号)将自动更新
更新实体时,请使用附加(实体)
。附着实体后对其进行更改。在将其附加到上下文之前进行更改不会触发更新SQL,因为上下文会认为没有任何内容可更新。当您添加新的记录时,请使用InsertOnSubmit(实体)
,之后,调用SubmitChanges()后,对象上的任何自动编号(如主)将自动更新
更新实体时,请使用附加(实体)
。附着实体后对其进行更改。在将对象附加到上下文之前进行更改不会触发更新SQL,因为上下文会认为没有任何内容可更新。我不知道这是否会导致问题,但您分离的对象与附加的对象完全相同?请在将对象从旧上下文分离并附加到新上下文后尝试更改该对象。是否尝试使用SQL Profiler查看更新的内容?我不知道这是否会导致您的问题,但您分离的对象与附加的对象完全相同?尝试在将对象从旧上下文分离并附加到新上下文后更改该对象。您是否尝试使用SQL Profiler查看更新的内容?