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

 

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

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

无法确定“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主键的.

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

 

参考资料

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

EF5+MVC4系列(2) EF5报错 无法确定“XXX”关系的主体端。添加的多个实体可能主键相同的更多相关文章

  1. EF5+MVC4系列(1) Podwerdesigner15.1设计数据库;PD中间表和EF实体模型设计器生成中间表的区别;EF5.0 表关系插入数据(一对多,多对多)

    在上一篇文章中, http://www.cnblogs.com/joeylee/p/3790980.html  我们用 PD15.1 来设计了数据库,并且生成 了sql数据库,现在我们用 vs2013 ...

  2. EF5+MVC4系列(12) 在主视图中直接用RenderAction调用子Action,并返回视图(Return View)或者分部视图(Return PartialView); 从主Action传值到子Action使用TempData传值;TempData高级用法

    结论: ViewData 适用于 在一次请求中 传递数据  . 比如我们从 主Action 到 主视图, 然后在 主视图中  用 RenderAction 请求子Action的时候,就是算作 一次请求 ...

  3. EF5+MVC4系列(11)在主视图中用Html.RenderPartial调用分部视图(ViewDate传值);在主视图中按钮用ajax调用子action并在子action中使用return PartialView返回分布视图(return view ,return PartialView区别)

    一:主视图中使用Html.RenderPartial来调用子视图(注意,这里是直接调用子视图,而没有去调用子Action ) 在没有使用母版页的主视图中(也就是设置了layout为null的视图中), ...

  4. 端口报错listen eaddrinuse:::xxx

    端口报错 listen eaddrinuse:::xxx 表示这个端口被占用 结束正在使用此端的程序即可.

  5. 报错:System.Data.Entity.Validation.DbEntityValidationException: 对一个或多个实体的验证失败

    使用MVC和EF,在保存数据的时候报错:System.Data.Entity.Validation.DbEntityValidationException: 对一个或多个实体的验证失败.有关详细信息, ...

  6. Xcode基本设置系列和Xcode报错解决方案

    1, arc机制中调用非arc文件. Xcode——>Project->Build Phases,将需要非arc文件更改为:"-fno-objc-arc"   ,该参数 ...

  7. zabbix系列之三——安装报错

    1Zabbix_server启动失败 1.1查看日志:vi /var/log/zabbix/zabbix_server.log zabbix_server [23500]: cannot open l ...

  8. Sqli labs系列-less-5&6 报错注入法(下)

    我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...

  9. Sqli labs系列-less-5&6 报错注入法(上)

    在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号...当然我是看了源码的.... 基于报错注入的方法,我早就忘的差不多了,,,我记的我最后一次基于 ...

随机推荐

  1. vs ComboBox显示多行

    ComboBox,Drop List Type添加了多个数据,但是编译出来点下来按钮,只有一行. 惆怅 然后搜了下发现有人说: 在资源里面点向下箭头,把数据区拉长一点 然后才发现,原来资源里的Comb ...

  2. git命令--git checkout 之 撤销提交到暂存区的更改

    SYJ@WIN-95I6OG3AT1N /D/gitlab/ihr-kafka-produce (master) $ git status [由于工作区文件被修改了,所以显示为红色] On branc ...

  3. FIDDLER的使用方法及技巧总结(连载五)FIDDLER的一些故障排除

    五.FIDDLER的一些故障排除

  4. spring filter 配置

    web xml <filter>    <filter-name>DelegatingFilterProxy</filter-name>    <filter ...

  5. maven invalid loc header

    项目部署之后出现如题错误 清除maven资源库原有的jar,重新下载即可解决

  6. pypi配置国内开源镜像

    ### windows ------------------------------------------------- 在用户目录下新建 pip文件夹,新建pip.ini文件 [global] i ...

  7. 一个实体对象不能由多个 IEntityChangeTracker 实例引用。

    错误代码 public bool addSubOptionItem(csModel.cs_Answer answers) { bool result = false; wpe = new csWeiP ...

  8. VMWare: eth0: error fetching interface information : device not found

    VMWare: eth0: error fetching interface information : device not found  今天在VMware上新搭建的Redhat Linux 64 ...

  9. [转]MySQL中int(11)最大长度是多少?

    原文地址:https://blog.csdn.net/allenjay11/article/details/76549503 今天在添加数据的时候,发现当数据类型为 int(11) 时,我当时让用户添 ...

  10. java泛型中<? super String>和<? extends String> 的区别

    (1)<? super String> is any class which is a superclass of String (including String itself). (I ...