EF 自关联表主键自增情况下,不能添加记录的问题,有谁解决过?

如题,我的系统中因为一个特定原因,需要一张自关联表(thisTable)来简化逻辑,
该表主键是自增的,结果发现无法添加记录,
错误消息:无法确定“db.thisTable”关系的主体端。添加的多个实体可能主键相同。
请问,有人解决过这个问题吗?

4个回答

自己解决了,顺便分享给大家:
在EF的设定里,自关联的表主键外键,都不能为空(为空就会破坏数据的完整性),
这在两表关联时没问题,但在自关联就有一个悖论,那就是第一条数据的ParentId指向谁?
这就是我这个问题的根本,所以我的做法,就是预先手动往表里插条记录,
以确保通过EF插入的数据,他的ParentId都能落实。

我们的数据库类别ID默认是自增长的 按理说不用指定主键ID 但是不指定ID
像我上面 一下次插入多条时 插入时却报错 ~~
无法确定“db.thisTable”关系的主体端。添加的多个实体可能主键相同。指定了ID 才能解决这个问题

你这个回答不能解决问题,我实验过了,空表只插入一条数据也不行,因自关联的原因。
希望有人能给出解决方案

最后codefirst解决一切问题。。。。。哎。。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
EF自增id 批量入库无效问题

数据库设为自增,但是用EF封装的批量添加方法返回false,单个Insert没问题

EF同时写入自增id表时会出现冲突出错怎么解决

entity framework 同时写入一张自增id表时,会报错,这个有办法解决吗? 或者有其他方式实现,多进程

EF Code-First 自增列种子如何设置

[Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int UserId { get; set; } public string UserName { get; set; } 想让用户ID,从100000开始自增,请问怎么配置?

主键关联 和 外键关联

请问这样的理解是否准确? 主键关联: person_t: person_id address_id address_t address_id address_name 他们通过 address_id 关联是外键关联 person_t: person_id persion_name address_t person_id address_name 他们通过person_id 关联就是主键关联。 是这样理解的吧????

EF为存在的表新增外键

请问: 如何在C#中使用EF为已存在的两张数据表新增外键约束关系! 描述: 在一个解决方案可的两个项目中,两个独立的数据源。A数据源中的company表要和B数据源的project表建立一对多的关系。 在微软官方教程上没有。教程中都讲的是一个数据源。 http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx https://msdn.microsoft.com/en-us/library/jj591620(v=vs.113).aspx 而且建立外键关系时同时创建了数据表。没有看到对已存在的两张表新建关系。 目前在A数据源中companyInfo类中加了一条语句: public virtual ICollection<ProjectInfo> ProjectInfoes { get; set; } 用来建立companyInfo表和projectInfo表之间的外键关系。update-database数据源A后。在B数据源也需要update-database,因为B数据源中的projectInfo 表和该数据源中其他表也有外键关联。在SQL Server 2008R2中为一个数据库。因此会报错:project表已在。如下图![图片说明](https://img-ask.csdn.net/upload/201710/21/1508555645_923933.png):请大家帮看一下吧!谢谢!

EF模型优先中 T4 模板获取 实体主键名称类型

EF 模型优先中,生成实体的T4模板中,怎么获取每个实体主键名称,主键是自增的 ![图片说明](https://img-ask.csdn.net/upload/201608/30/1472545410_443148.png) 这是 自动生成的 T4模板里面 获取 基本属性和导航属性的 代码,就是不知道怎么获取主键 --- ![图片说明](https://img-ask.csdn.net/upload/201608/30/1472546724_614001.png) --- ![图片说明](https://img-ask.csdn.net/upload/201608/30/1472546736_764913.png)

EF框架关于数据库两个关联的表操作的一些问题

在EF创建两个多对多关联的实体,并且映射到数据库中,在对中间表进行查询或是清除中间表的数据时操作失败,使用数据库跟踪发现没有生成相应的代码 ``` static void Main(string[] args) { OAMangerEntities db = new OAMangerEntities(); var user = db.CreateObjectSet<UserInfo>().Where(u => u.ID == 2).FirstOrDefault();//查询出User的信息 //user.Role.Clear();//当中间变没有数据的时候可以插入数据,但是这句代码无法清除数据库中关联表中的数据 var role = db.CreateObjectSet<Role>().Where(r => r.ID == 2).FirstOrDefault();//查询出role的信息 ////user.Role.Add(role); //test.SaveChanges(); /*******************************/ //这段代码在使用数据库跟踪查询时没有生成相应的SQL语句,一直调试找不出原因!!!!! var s = (from r in user.Role select r.ID).ToList(); /******************************/ Console.WriteLine("ok"); Console.ReadKey(); ```

EF 做联合,怎么给关联的表加条件

A表 ID,NAME,BID B表 ID,NAME,STATE ``` var leftJoinSql = from a in db.A join b in db.B on a.ID equals b.ID into bb from bbb in bb.DefaultIfEmpty() select new { aname= a.NAME, bname = bbb==null?"":bbb.NAME }; ``` 我想加个过滤条件,只关联B表STATE=0的字段

C# EntityFramework框架修改主键

我数据库只有一个字段不是主键,但是导入EF实体模型类变成了主键不允许修改怎么办,我要修改他。

C#使用EF框架,连表新增和修改问题

![图片说明](https://img-ask.csdn.net/upload/201908/26/1566790668_337207.png) C#程序 使用EF框架,有3张表A,B,C(红框内)经行A表插入数据,给入参数 Aid=1 Aname=AA Bname=B1 Cname=C1 要求插入绿框里的样子,然后给入参数Bname=B2 Cname=C2 更新这条A表的数据怎么写?现在用的是分开写的 ``` Model.Bid=db.Btable.Where(b=>b.Bname==Bname).select(b=>b.Bid).FirstOrDefault(); Model.Cid=......; db.Atable.add(Model); ``` 有没有一句完成的?linq或者lambda都可以。

ef linq 多表查询条件问题

![图片说明](https://img-ask.csdn.net/upload/201705/26/1495793172_987498.png) ![图片说明](https://img-ask.csdn.net/upload/201705/26/1495793182_1881.png) ![图片说明](https://img-ask.csdn.net/upload/201705/26/1495793190_662254.png) ![图片说明](https://img-ask.csdn.net/upload/201706/05/1496629098_939061.png) A 表是要查询的表 B表和C表是父子关系 我需要查询 A 表的所有字段数据 条件是 A表和D表联合查询 条件是 D表TypeNo等于传进来的TypeNo And A 表的 Count != (C表 Status = 0 的B子表集合(B子表RequisitionDetailId=A表ID)B表 Count字段统计和 加上 C表 Status = 1 的B子表集合(B子表RequisitionDetailId=A表ID)B表 Count字段统计和) 查询语句怎么写 A表是申购单明细 B表是采购单明细 C表是采购单 B表和A表有字段关联 简单的说就是 查询出没有采购完的申购单 我是通过判断采购单待审核的采购单明细Count字段总和加上采购单已审核的采购单明细Count字段总和 对应申购单A表的Count字段是否相等 列出未采购完的申购单

ef 多表增删改查, 四个操作怎么解决

不知道ef 处理多表写在哪里 bll 和dal 都是单表的接口处理不知道写在哪里 是controller 吗 var temp = (from r in userCurrent.R_UserInfo_ActionInfo where r.ActionInfoID == currentAction.ID select r).FirstOrDefault(); 还是 model 一下两坨也不太明白 public IEnumerable<MenuItem> MenuItems { get; set; } public ICollection<MenuItem> MenuItem { get; set; } 求怎么处理 , 是增删改查 ,不是仅仅查询

Linq 复合主键的表联合

A表 号码,颜色,名称 B表 号码,颜色,状态 我想得到,名称,状态,

如何在EF 5.0 中做带外键的数据新增

各位大牛好,我有一个EF的问题: 我有一张主表,包含2个子表,是用外键关联的,但是其中一张子表又是另一个子表的子表,也是用外键关联的,请问在EF中如何新增这3张表的记录。

EF框架DBfirst,表的字段增加后,实体的字段无法同步添加

如题,后期因为用户要求在一张表里添加了一个字段,然后想在实体里更新一下。 通过从数据库更新到模型后会提示报错,“已存在具有相同键的条目”。我把模型删了之后,重新添加也不行 删除后整个模型都添加不了,而且报的错误与之前相同。如果把整个模型都删除,重新弄得话,确实可以。但是数据库里有很多表都是没用。 跪求大神帮助。刚学EF的菜鸟一个!!!!

EF code first 实体类修改、添加、删除操作问题

EF code First 怎么来更新已存在的数据库结构? 比如:在实体类中我新添加了一个字段、修改字段名称或者类型、删除一个字段 等操作后我怎么更新到已存在的数据库对于表中去。 担心:我在持续开发中,改变了数据库的结构,如果这时候用户已经用以前的版本创建好数据库并且有了许多数据,假使我的修改只增加了一个表的一个可空列。而为此我只能重新创建数据库。请问有没有别的办法,能够把新的数据库结构在不损伤数据的情况下更新到部署好的环境中? 当然我知道自己可以先写SQLScript来提前更新用户环境。但是EF有没有别的办法对于实体类中的字段新增、修改、删除等操作?

EF表联合,一对多表联合查询

A表,字段:AID,CLASS B表,字段 :BID,BNAME,AID A表数据 1 班级1 2 班级2 B表数据 1 学生1 1 2 学生2 1 3 学生3 2 4 学生4 2 我想得到 班级1 学生1,学生2 班级2 学生3,学生4 这样怎么联合

一个关于插入一条数据如何拿该条数据主键的问题

String action=request.getParameter("action"); if(action !=null && action.trim().equals("post")){ String title=request.getParameter("title"); System.out.println(title); String cont=request.getParameter("cont"); System.out.println(cont); Connection conn=DB.getConnection(); boolean autoCommit=conn.getAutoCommit(); conn.setAutoCommit(false); int rootId=-1; String sql="insert into article values(s_test.nextval,?,?,?,?,sysdate,?)"; PreparedStatement pstmt=DB.prepareStmt(conn, sql,Statement.RETURN_GENERATED_KEYS); pstmt.setInt(1, 0); pstmt.setInt(2, rootId); pstmt.setString(3, title); pstmt.setString(4, cont); pstmt.setInt(5,0); pstmt.executeUpdate(); ResultSet rsKey=pstmt.getGeneratedKeys(); rsKey.next(); rootId=rsKey.getInt(1); Statement stmt=DB.createStmt(conn); stmt.executeUpdate("update article set rootid="+rootId+ "where id="+rootId); 这个功能就是想实现拿到刚刚插入那条的id,视频里用mysql设定的逐渐自增,可是我本地用的oracle,这种方法不能拿出刚插入的那条的id,报了异常,还请各位大神指导

EF主表查询把子表信息都查询出来了

现在有两个表表A跟表B 表A是表B的主表 在用EF查询表A的时候 会自动把表B的数据也都给查询出来 有什么办法禁止查询这个子表吗 ![图片说明](https://img-ask.csdn.net/upload/201703/22/1490174331_295524.png) 代码是这样的 因为要存缓存还没办法用匿名类型 刚注册没有悬赏 麻烦大家了

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

C++11:一些微小的变化(新的数据类型、template表达式内的空格、nullptr、std::nullptr_t)

本文介绍一些C++的两个新特性,它们虽然微小,但对你的编程十分重要 一、Template表达式内的空格 C++11标准之前建议在“在两个template表达式的闭符之间放一个空格”的要求已经过时了 例如: vector&lt;list&lt;int&gt; &gt;; //C++11之前 vector&lt;list&lt;int&gt;&gt;; //C++11 二、nullptr ...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

【阿里P6面经】二本,curd两年,疯狂复习,拿下阿里offer

二本的读者,在老东家不断学习,最后逆袭

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生!...

作者 | 伍杏玲出品 | CSDN(ID:CSDNnews)格子衬衫、常掉发、双肩包、修电脑、加班多……这些似乎成了大众给程序员的固定标签。近几年流行的“跨界风”开始刷新人们对程序员的...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

我说我懂多线程,面试官立马给我发了offer

不小心拿了几个offer,有点烦

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

立即提问
相关内容推荐