none
相联表删除数据添加问题 RRS feed

  • 问题

  • 两个表Order,Detail ,关系一对多

    实现方法,Detail展示时保存在List中,方便增、删、改,操作完后提交修改后数据。

    为了实现方便,没用对修改后数据进行检测,直接把order相关记录detail删除了,再把List中的记录添加进去。

    结果提示Detail中的键值已经存在了,为什么啊?我使用的是WCF Ria

    我的实现方法如下:

    for(int i = order.Detail.count() - 1;i>=0 ;i--)

    {

    order.Detail.remove(order.Detail.ElementAt(i));

    }

    foreach(var item in List)

    {

    order.detail.Add(item);

    }

    context.SubmitChanges();


    2011年8月9日 7:32

答案

  • 你好,

    出现问题是因为你这样做并没有把数据库中的数据清除(Detail表中的数据),然后添加了相同主健的数据。

    你为什么要先进行删除操作再添加呢。其实你可以对数据进行修改(不用删除),然后调用SubmitChanges() 方法。这样就能够对数据进行修改了。

     


    Daoping Liu - MSFT
    2011年8月11日 2:25
    版主
  • 因为我对数据的修改全部存放在List中,我不想一条一条的检测用户对List中的记录做了什么修改,对每一条记录用户都可能做增删除改操作,所以就打算清空,重新添加了。
    问题就在这呀,你修改的数据是在List而不是数据库中,你再对数据库进行数据插入操作就会有重复的数据。

    Daoping Liu - MSFT
    2011年8月15日 2:00
    版主

全部回复

  • 你好,

    出现问题是因为你这样做并没有把数据库中的数据清除(Detail表中的数据),然后添加了相同主健的数据。

    你为什么要先进行删除操作再添加呢。其实你可以对数据进行修改(不用删除),然后调用SubmitChanges() 方法。这样就能够对数据进行修改了。

     


    Daoping Liu - MSFT
    2011年8月11日 2:25
    版主
  • 你好,

    出现问题是因为你这样做并没有把数据库中的数据清除(Detail表中的数据),然后添加了相同主健的数据。

    你为什么要先进行删除操作再添加呢。其实你可以对数据进行修改(不用删除),然后调用SubmitChanges() 方法。这样就能够对数据进行修改了。

     


    Daoping Liu - MSFT
    因为我对数据的修改全部存放在List中,我不想一条一条的检测用户对List中的记录做了什么修改,对每一条记录用户都可能做增删除改操作,所以就打算清空,重新添加了。
    2011年8月12日 7:40
  • 因为我对数据的修改全部存放在List中,我不想一条一条的检测用户对List中的记录做了什么修改,对每一条记录用户都可能做增删除改操作,所以就打算清空,重新添加了。
    问题就在这呀,你修改的数据是在List而不是数据库中,你再对数据库进行数据插入操作就会有重复的数据。

    Daoping Liu - MSFT
    2011年8月15日 2:00
    版主