Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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#_.net_Linq_Linq To Sql - Fatal编程技术网

C# 无法将LINQ中的记录更新为SQL

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

需要使用LinQ更新记录方面的帮助

我尝试更新记录,但它没有显示在数据库中

主键在db和LinQ dbml文件中都设置

代码如下:

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查看更新的内容?