Entity Framework 4.0中在SaveChanges()前获取自增ID的问题

jsonzbc 2016-01-11 05:37:07
如题,我现在有三张表A,B,C三张表想同时更新,且A表的ID分别为B,C表的外键,也就是说我要获取A表的ID后再同时赋值给B,C表的外键字段AID,现在是不SaveChanges,A表的ID就是0,这三张表的ID都是在数据库中设置的自增长,所以不需要手动赋值。问如何在SaveChanges()前获取自增ID
...全文
557 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yang1216 2016-11-11
  • 打赏
  • 举报
回复
直接这样啊 A a=new A{ blabla}; B b=new B{A=a;......}; C c=new C{A=a;......}; dbContext.As.Add(a); dbContext.Bs.Add(b); dbContext.Cs.Add(c); SaveChanges(); 前提是Model要写好外键
  • 打赏
  • 举报
回复
Insert(A); B.aid=A.ID; C.aid=A.ID; Insert(B); Insert(C); SaveChanges 按照这个顺序就可以了满足你的要求,但是有前提条件,你需要提前根据EF规则将ABC的关系映射好。 注: (1)调试的时候A.ID为0,实际执行时是对应的自增ID (2)我是ef6.0+sqlserver测试成功,其他的未测试
jsonzbc 2016-01-12
  • 打赏
  • 举报
回复
引用 9 楼 lvfeng1989 的回复:
那你试试 Ef自定义事物“Entity.HappyOAEntities”吧,看看可以吗
HappyOAEntities这个我也试了,在我这个Entity命名空间下,好像没有这个类
lvfeng_95 2016-01-12
  • 打赏
  • 举报
回复
那你试试
引用 8 楼 zbc496218 的回复:
[quote=引用 7 楼 lvfeng1989 的回复:] [quote=引用 2 楼 zbc496218 的回复:] [quote=引用 1 楼 lvfeng1989 的回复:] SaveChanges后再获取一下就可以了
现在SaveChanges就是直接写入到数据库中了,我不想写入到数据库中,等后面BC表同时更新好了之后,再一同SaveChanges[/quote] 那你就别用自增 自己设置ID[/quote] 数据已经设置好了,这是基于现在有的数据库进行开发的,能自定义ID当然好了,但是现在不行了[/quote] 那你试试 Ef自定义事物“Entity.HappyOAEntities”吧,看看可以吗
jsonzbc 2016-01-12
  • 打赏
  • 举报
回复
引用 7 楼 lvfeng1989 的回复:
[quote=引用 2 楼 zbc496218 的回复:] [quote=引用 1 楼 lvfeng1989 的回复:] SaveChanges后再获取一下就可以了
现在SaveChanges就是直接写入到数据库中了,我不想写入到数据库中,等后面BC表同时更新好了之后,再一同SaveChanges[/quote] 那你就别用自增 自己设置ID[/quote] 数据已经设置好了,这是基于现在有的数据库进行开发的,能自定义ID当然好了,但是现在不行了
lvfeng_95 2016-01-12
  • 打赏
  • 举报
回复
引用 2 楼 zbc496218 的回复:
[quote=引用 1 楼 lvfeng1989 的回复:] SaveChanges后再获取一下就可以了
现在SaveChanges就是直接写入到数据库中了,我不想写入到数据库中,等后面BC表同时更新好了之后,再一同SaveChanges[/quote] 那你就别用自增 自己设置ID
Justin-Liu 2016-01-12
  • 打赏
  • 举报
回复
saveschanges之后获取,否则就自行设置ID
事理 2016-01-12
  • 打赏
  • 举报
回复
A表SaveChanges()后,保存的对象自增列好像就有值了,然后再网B、C表中插入数据
jerry_zjnb 2016-01-12
  • 打赏
  • 举报
回复
引用 3 楼 zbc496218 的回复:
等同于是个事务,如果后面BC表中赋值有错误,或者出错的同时,事件回滚,也就是A表记录同时也不要保存进去
为什么要获取自增长ID呢?既然使用EF,直接使用对象实例设置外键即可。在调用SaveChanges后,类似事务一起提交。
jsonzbc 2016-01-11
  • 打赏
  • 举报
回复
等同于是个事务,如果后面BC表中赋值有错误,或者出错的同时,事件回滚,也就是A表记录同时也不要保存进去
jsonzbc 2016-01-11
  • 打赏
  • 举报
回复
引用 1 楼 lvfeng1989 的回复:
SaveChanges后再获取一下就可以了
现在SaveChanges就是直接写入到数据库中了,我不想写入到数据库中,等后面BC表同时更新好了之后,再一同SaveChanges
lvfeng_95 2016-01-11
  • 打赏
  • 举报
回复
SaveChanges后再获取一下就可以了

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧