首页新闻找找看学习计划

MVC框架如何在SaveChanges()之前拿到对象的自增长ID?

0
[已解决问题] 解决于 2014-06-27 12:12

1.roomStatusRecord = this.roomStatusRecordDao.Insert(roomStatusRecord); 2.roomClean = this.roomCleanDao.Insert(roomClean);

3.db.SaveChanges();

---------------------------------------------------------------------------------------

程序执行顺序如此排序,现需求为第一个insert之后拿到自增长ID,可是savechanges()是在最后执行保证两个方法的事务,所以这样的需求如何能拿到roomStatusRecord的自增长ID来赋值给roomClean对象可以顺利的插入进去呢,roomStatusRecord的自增长ID是roomClean的外键。

技术控甄的主页 技术控甄 | 菜鸟二级 | 园豆:236
提问于:2014-06-25 20:22
< >
分享
最佳答案
1

直接返回DBSET<T>.ADD(T)之后的实体,后面直接就可以使用这个类的自增长属性了。

Tips:

调试的时候会始终显示为0,但是实际在程序执行到savechanges时根据先后顺序,后一个是可以拿到前一个自增长ID的。调试半天都是0,但是发现数据库还是成功插入了。

技术控甄 | 菜鸟二级 |园豆:236 | 2014-06-27 12:12

说的好像真的可以似的,结果还是不可以  ef6 +mysql  返回的ID一直是0

花间游 | 园豆:200 (初学一级) | 2015-10-13 18:38

我的ef6.0+sqlserver,调试的时候是0,实际插到数据库中的是正确的值 

a-fei | 园豆:200 (初学一级) | 2016-11-10 16:54
其他回答(8)
0

想问一个问题,自增ID真的如此不可舍弃吗?

爱编程的大叔 | 园豆:29841 (高人七级) | 2014-06-25 21:49
0

用 sql 怎么实现?

Launcher | 园豆:45040 (高人七级) | 2014-06-26 08:33
0

跟MVC框架有个屁关系。

是EF的事情吧。自增的ID我记得EF插入的时候会自动返回并赋值给原来的实体对象。也就是你这个对象savechange后,自增ID就有值了

吴瑞祥 | 园豆:28729 (高人七级) | 2014-06-26 08:55
0

如果建好关系了,应该可以直接保存,要不然 一个一个来

Qlin | 园豆:2403 (老鸟四级) | 2014-06-26 09:05
0

数据都没被执行 高并发的情况下你拿到的“自增长ID” 又有何用?,还是老老实实的用GUID吧

Y2zz | 园豆:388 (菜鸟二级) | 2014-06-26 15:03
0

同三楼,确实可以保存后得到ID。先保存第一个Insert 然后roomStatusRecord.ID就可以得到数据库中的ID

黑峰 | 园豆:544 (小虾三级) | 2014-06-26 17:59
0

你insert了之后查一下当前有多少个实体,然后实体数-1不就是自增的id了么

Mushroom0417 | 园豆:327 (菜鸟二级) | 2014-06-27 01:07
0

老老实实用Guid+1。

当前有多少个实体,然后实体数-1<-这种做法不可取,高并发下有错误。

h82258652 | 园豆:293 (菜鸟二级) | 2014-06-27 08:56

sql的话,用output关键字。返回插入后的主键。

支持(0) 反对(0) h82258652 | 园豆:293 (菜鸟二级) | 2014-06-27 08:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册