LINQ to SQL:按值将单个记录存储在内存中(提交更改后不应更改)



我很确定一定已经有这样的问题,但我就是找不到。

我想通过 LINQ 从 SQL 检索记录并将其存储在变量中。 然后我想更新数据,但变量仍应包含旧值。 变量基本上应该"按值"存储记录。

对于多个记录,我可以使用.ToList(( 来检索数据并将其存储在内存中,但是对于单个记录执行此操作的最佳方法是什么?

例:

var record = dc.MyTable.Where(p => p.ID == 1).FirstOrDefault();
var orignalRecord = ??;
record.Name == "New Value";
dc.SubmitChanges();
//Now I would like orignalRecord.Name to still have "Old Name".

本机不支持此行为,但您有两种选择来自行实现它:

  1. 对象类中定义Clone方法,如下所示(这种方式仅支持浅拷贝(:

    class MyTable
    {
    public string Name { get; set; }
    public MyTable Clone()
    {
    return (MyTable)MemberwiseClone();
    }
    }
    
  2. 实现使用序列化程序(如Newtonsoft(序列化和反序列化对象的方法(此方式支持深层复制(