我尝试使用 SetValues 方法克隆实体,但出现以下错误:
无法跟踪实体类型“TariffPeriod”的实例,因为已跟踪具有相同键值 {'Id'} 的另一个实例。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。
这是代码:
var period2 = _tariffRepository.GetPeriodFull(period.GUID);
var period3 = new TariffPeriod();
_appDbContext.TariffPeriods.Add(period3);
_appDbContext.Entry(period3).CurrentValues.SetValues(period2);
我发现该错误是由于主键的值被复制到新实体中造成的。那么,如何在没有密钥的情况下复制值呢?
感谢您的帮助
埃里克
您可以尝试获取 period2 数据的克隆并在分配给 period3 之前修改 Id
var values = db.Entry(period2).CurrentValues.Clone();
values["Id"] = 0;
db.Entry(period3).CurrentValues.SetValues(values);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)