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

情景:用户表和订单表是一对多的关系,即 一个 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报错 无法确定“XXX”关系的主体端。添加的多个实体可能主键相同

时间: 2024-08-29 17:07:35

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

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

使用MVC和EF,在保存数据的时候报错:System.Data.Entity.Validation.DbEntityValidationException: 对一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性. 日志记录中,出错的地方在result += db.SaveChanges();所在行,尝试如下操作: →使用try...catch捕获→在catch所在行打上断点,运行,F11,对ex变量添加监视→在EntityValidati

dao 接口定义了一个方法,报错 The method xxx is undefined for the type xxx;

转自:https://blog.csdn.net/panshoujia/article/details/78203837 持久层(DAO层)下的一个接口 ,eclipse报了一个The method xxx  is undefined for the type xxxx,以为方法的参数类型有误,找来找去也没有发现参数或者参数类型错误,结果重新将整个project  clear一下,重新启动AliTomcat就可以. 原文地址:https://www.cnblogs.com/sharpest/p/

【Java+Maven】问题系列——Maven 报错 Missing artifact xxx:xxx:bundle:xx.xx.xx

这个问题可能是依赖的项目打包成bundle造成,比如mina就是这样的,打包成bundle,例子: <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-core</artifactId> <version>2.0.4</version> <type>bundle</type> <scope>compile<

asp.net中的reportview报错跟预编有关系

当报表控件出现: 报表定义无效.详细信息:根级别上的数据无效.行1,位置1. 先检查一下,你的aspx文件是不是变成了这样一句话 这是预编译工具生成的标记文件,不应被删除! 如果这样的话,报表控件是不支持编译到bin里面去的. 在右击发布网站时,如下操作:

Xcode报错 The document “xxx.h” could not be saved. The file doesn’t exist.

记录一个问题 场景:Xcode编辑一个工程时直接在工程内部修改了某个目录的文件夹名字,而后删除了其下的某 .h.m 文件 之后总是提示上述错误且无法强制退出Xcode,clean等操作基本没用 查找本地文件也并未发现被删除的xx.h文件的存在,于是从Xcode工程内又把之前改名的文件夹又改名回去, 这时发现之前本地被删的.h文件又回来了,惊悚之下直接从工程内将该文件夹remove reference.再次删除本地xx.h文件 完成这些后,乖乖的从本地目录先改名再重新导入到工程 以上. 原文地址:

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

public UserInfo Create(UserInfo entity) { try { context.UserInfoes.Add(entity); context.SaveChanges(); } catch (Exception ex) { throw; } return entity; } 从局部变量框中找EntityValidationErrors--ValidationErrors中的第一个元素--ErrorMessage属性,查看错误原因

关于CodeFirst异常:无法确定类型&#39;XXX&#39;和类型‘YYY’之间的关联的主体端,必须使用关系 Fluent API 或数据注释显式配置此关联的主体端。

此错误的原因是,你配置两个实体间的关系为一对一 然而我认为的一对一关系是,两者之间必须存在一个主体, 也就是说,你不能表1的外键是表2的主键并且表1的主键是表2的外键, 这样不符合数据库式吧? 我想多数人犯这个错误是无意的,并不是想表1的外键是表2的主键并且表1的主键是表2的外键, 怎么改呢?确定主体! 主体就是你要把其他实体的主键存进来的实体. 把非实体的导航属性删除就ok了. 关于CodeFirst异常:无法确定类型'XXX'和类型'YYY'之间的关联的主体端,必须使用关系 Fluent A

SharePoint 2013 安装.NET Framework 3.5 报错

环境描述 操作系统:Windows Server 2012 R2 Datacenter版本 安装报错 中途接手安装SharePoint Server 2013 with sp1,配置向导报错如下: Application Server Role , Web Server (IIS) Role : Configuration error 报错截图 一 报错截图 二 一般来说,这样的错误都是IIS也就是Web Server没有提前安装好,然后去检查IIS,发现已经安装.查看详细错误日志,发现.NET

搭建仓库,yum报错无签署问题

在centos系统中使用yum报错 yum install xxx.rpm warning: Package xxx.rpm is not signed google一下,解决方法都是 1.修改yum.conf 路径:/etc/yum.conf 找到 gpgcheck=1 将其修改为0:gpgcheck=0 2.修改/etc/yum.repos.d /utterramblings.repo 找到 gpgcheck=1 将其修改为0:gpgcheck=0 如果不行 只要在在后面加上--nogpgc