//删除老的明细
valuedrcvd.TbValuedrcvdDetails.Clear();
foreach (var item in list)
{
//分离关系
LinqHelper.Detatch(item);
//从缓存中添加到明细中
valuedrcvd.TbValuedrcvdDetails.Add(item);
}
Valuedrcvd.Save();
主从表作修改,想法是删除老的记录明细,再重新添加明细(这种作法是没办法的办法,不知高手们有没有更好的想法)。
结果直接报“不能添加其键已在使用中的实体” 错误。不知是何原因。
平时用订单操作的时候,如果有修改订单明细我都是先删除明细里老的数据,再重新添加。
问题就在了。
比如我在订单明细里有 A、B、C,而我删除了B后再作保存。
正因为 Linq2Sql 里对实体的 Clear() 方法是清除从表(订单明细表)中外键(订单表的主键)的值,而不是删除从表的数据,所以在数据库里 A、B、C数据都还存在,再作添加A、C 竟然就报错了。
valuedrcvd.TbValuedrcvdDetails.Clear(); //不是删除从表数据,只是删除了从表的外键。