我正在基于id提取这2个对象,Id相同
var oldeUserExist = await UserManager.FindByIdAsync(model.UserData.Id ?? null);
var userExist = await UserManager.FindByIdAsync(model.UserData.Id ?? null);
问题是什么
->考虑oldeUserExist.phonenumber为空
->如果我更新userExist对象中的电话号码值,它也会更新oldeUserExist对象中的电话号码值
我的问题是FindByIdAsync正在按引用对象进行复制吗?如果是,那么我们应该如何避免这种情况?
谢谢
答案 0 :(得分:0)
只需使用以下代码创建User对象的克隆:
public static T Clone<T>(T toClone) where T : class
{
string tmp = Newtonsoft.Json.JsonConvert.SerializeObject(toClone,Formatting.None, new JsonSerializerSettings
{
PreserveReferencesHandling = PreserveReferencesHandling.All,
});
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(tmp);
}
这样,两个对象就不会互相引用。