C# LINQ到SQL:按值在内存中存储单个记录(提交更改后不应更改)
我很确定肯定已经有这样一个问题了,但我就是找不到 我想通过LINQ从SQL检索一条记录,并将其存储在一个变量中。 然后我想更新数据,但变量仍然应该包含旧值。变量基本上应该“按值”存储记录 对于多个记录,我可以使用.ToList()检索数据并将其存储在内存中,但对于单个记录,最好的方法是什么 例如:C# LINQ到SQL:按值在内存中存储单个记录(提交更改后不应更改),c#,linq-to-sql,C#,Linq To Sql,我很确定肯定已经有这样一个问题了,但我就是找不到 我想通过LINQ从SQL检索一条记录,并将其存储在一个变量中。 然后我想更新数据,但变量仍然应该包含旧值。变量基本上应该“按值”存储记录 对于多个记录,我可以使用.ToList()检索数据并将其存储在内存中,但对于单个记录,最好的方法是什么 例如: var record = dc.MyTable.Where(p => p.ID == 1).FirstOrDefault(); var orignalRecord = ??; record.N
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".
本机不支持此行为,但您有两种选择自己实现它:
Clone
方法(这种方式仅支持浅复制):
Newtonsoft
之类的序列化程序对对象进行序列化和反序列化(这种方式支持深度复制)class MyTable
{
public string Name { get; set; }
public MyTable Clone()
{
return (MyTable)MemberwiseClone();
}
}