zoukankan      html  css  js  c++  java
  • EF5+MVC4系列(2) EF5报错 无法确定“XXX”关系的主体端。添加的多个实体可能主键相同

    情景:用户表和订单表是一对多的关系,即 一个 Userinfo  对应对应有 多个 Order表

    image

     

    如果我在EF中,先创建一个用户,然后创建3个订单,然后关联这1个用户和3个订单的关系,毫无问题.

    但是:当我如果想创建2个用户,6个订单,并且分别去关联的时候,就提示报错

    image

    无法确定“XXX”关系的主体端。添加的多个实体可能主键相同

    原因可能是:

    当我们添加2个用户的时候,2个用户的id主键都是0,这样当保存到数据库的时候,就报错了. (疑问:但是订单1到6,他们的id也是主键,也是0,为嘛就不报错呢?)

    解决方法

    1:要么你的userinfo主表里面的数据,一个一个的添加.例如先添加用户1,然后保存用户1和订单123的关系.然后创建用户2,然后保存用户2和订单456的关系

     

    2:给UserInfo添加的时候,设置一个假的Id, 例如 Userinfo1 的id设置为1,Userinfo2的id 设置为2,这是我们自己手动设置的假的id,然后EF在关联 用户1和订单123,用户2和订单456的时候,由于发现用户1和用户2的id主键是不同的,所以就可以判断为是2个不同的主体端了.

    实际EF执行到数据库的时候,由于ID是主键,所以EF是不会理会我们自己手动创建的假的id主键的.

    image

    3:相当于是1的改版,我们先把主题端的用户1和用户2给保存到数据库,这样他们的id就会不一致,就不会提示 “添加的多个实体可能主键相同了”

    image

     

    参考资料

    http://stackoverflow.com/questions/8530581/multiple-added-entities-may-have-the-same-primary-key-in-entity-framework

    http://www.cnblogs.com/tukzer/archive/2013/04/20/3033326.html

  • 相关阅读:
    2.六角星绘制
    1.五角星绘制
    Redis
    javaScript
    反射
    区分'方法'和'函数'
    递归,二分法
    匿名函数,排序函数,过滤函数,映射函数,
    生成器,生成器函数,推导式,生成器表达式.
    函数,闭包,迭代器
  • 原文地址:https://www.cnblogs.com/joeylee/p/3805901.html
Copyright © 2011-2022 走看看