首页新闻找找看学习计划

一个让人郁闷的问题

0
[已关闭问题] 关闭于 2011-10-14 20:54

                        //删除老的明细
                        valuedrcvd.TbValuedrcvdDetails.Clear();

                        foreach (var item in list)
                        {
                            //分离关系
                            LinqHelper.Detatch(item);
                            //从缓存中添加到明细中
                            valuedrcvd.TbValuedrcvdDetails.Add(item);
                        }

                        Valuedrcvd.Save();

 

主从表作修改,想法是删除老的记录明细,再重新添加明细(这种作法是没办法的办法,不知高手们有没有更好的想法)。

结果直接报“不能添加其键已在使用中的实体” 错误。不知是何原因。

wunaigong的主页 wunaigong | 初学一级 | 园豆:4
提问于:2011-10-08 08:50
< >
分享
所有回答(1)
0

平时用订单操作的时候,如果有修改订单明细我都是先删除明细里老的数据,再重新添加。

问题就在了。

比如我在订单明细里有 A、B、C,而我删除了B后再作保存。

正因为  Linq2Sql 里对实体的 Clear() 方法是清除从表(订单明细表)中外键(订单表的主键)的值,而不是删除从表的数据,所以在数据库里 A、B、C数据都还存在,再作添加A、C 竟然就报错了。

 valuedrcvd.TbValuedrcvdDetails.Clear(); //不是删除从表数据,只是删除了从表的外键。

wunaigong | 园豆:4 (初学一级) | 2011-10-14 20:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册