LinqToSQL可以';不要更新两次

LinqToSQL可以';不要更新两次,linq,linq-to-sql,datacontext,insert-update,Linq,Linq To Sql,Datacontext,Insert Update,我尝试用相同的数据更新两次,但它引发异常 public void UpdateOnSubmit<T>(T data) where T : class { lock (_lockObj) { using (DataModel dx = new DataModel(this._adapter.ConnectionString)) { dx.GetTable<

我尝试用相同的数据更新两次,但它引发异常

    public void UpdateOnSubmit<T>(T data) where T : class
    {
        lock (_lockObj)
        {
            using (DataModel dx = new DataModel(this._adapter.ConnectionString))
            {
                dx.GetTable<T>().Attach(data);
                dx.Refresh(RefreshMode.KeepCurrentValues, data);
                dx.SubmitChanges();
            }
        }
    }
第一次更新成功,但第二次不成功。提前谢谢

问候,


布莱恩

好吧,看来我又找到了解决办法。我刚刚将DelferredLoadingEnabled设置为false,它就像一个符咒一样工作

    public void UpdateOnSubmit<T>(T data) where T : class
    {
        lock (_lockObj)
        {
            using (DataModel dx = new DataModel(this._adapter.ConnectionString))
            {
                dx.DeferredLoadingEnabled = false;
                dx.GetTable<T>().Attach(data);
                dx.Refresh(RefreshMode.KeepCurrentValues, data);
                dx.SubmitChanges();
            }
        }
    }
public void UpdateOnSubmit(T数据),其中T:class
{
锁
{
使用(DataModel dx=新的DataModel(this.\u adapter.ConnectionString))
{
dx.DeferredLoadingEnabled=假;
dx.GetTable().Attach(数据);
刷新(RefreshMode.KeepCurrentValue,数据);
dx.SubmitChanges();
}
}
}
    public void UpdateOnSubmit<T>(T data) where T : class
    {
        lock (_lockObj)
        {
            using (DataModel dx = new DataModel(this._adapter.ConnectionString))
            {
                dx.DeferredLoadingEnabled = false;
                dx.GetTable<T>().Attach(data);
                dx.Refresh(RefreshMode.KeepCurrentValues, data);
                dx.SubmitChanges();
            }
        }
    }