首页 新闻 会员 周边

EntityFramework事务

0
悬赏园豆:20 [已解决问题] 解决于 2012-11-05 16:15

TBTable1 tab1=new TBTable1{Id=1,name=""};//定义一个实体(实体主键假设为1)
Entities.TBTable1.AddObject(tab1);//把实体添加到DbContext
var query=Entities.TBTable1.FirstOrDefault(c=>c.Id=1);//查询DbContext中TBTable1表里的主键为1的对象

 

 

问题是为什么查到的对象为空呢,明明已经添加进去了啊!

我知道有人会说你插入之后调用一下savechanges()提交数据,但是我这里是想实现一个事务,上面插入数据,在另外的类里(同一个事务里)我要取出刚刚插入的数据的,所以这里还不能savechanges(),不然就不是完整事务了!

 

有人明白我再说什么?

  大神帮帮解惑吧!

问题补充:

谢谢你的回答。

我给你举个例子吧。就说选课的吧,李明选了A课。数据库已经有了李明选A课的记录了。之后李明又选了B课,那么我的操作就是需要1.把李明选B课的记录插进去2.查询李明一共选了几个课程,把结果统计出来插入到另一张表。

当然,现实中可能统计的不仅仅是总数,还需要统计很多项,所以我不想把刚插入的实体作为参数传到其他地方,我要在没有savechanges之前能查出来。

RyanCheng的主页 RyanCheng | 菜鸟二级 | 园豆:474
提问于:2012-11-01 21:26
< >
分享
最佳答案
1
            //获取将要添加状态的 实体集合
            IEnumerable<ObjectStateEntry> oseList = Entities.ObjectStateManager.GetObjectStateEntries(EntityState.Added);
            foreach (var item in oseList)
            {
                TBTable1 tb= (TBTable1)item.Entity;
                Console.WriteLine(tb.Id);
            }
收获园豆:20
Qlin | 老鸟四级 |园豆:2403 | 2012-11-02 12:17

这个做法貌似可以,非常感谢,等我试过之后给你打分

RyanCheng | 园豆:474 (菜鸟二级) | 2012-11-02 19:46
其他回答(2)
0

insert 跟select 不需要在一个事务中啊

一般都是insert和insert ,insert 和delete ,还有update 等等需要用到事务,你这个完全不需要事务的

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-01 22:47

谢谢你的回答。

我给你举个例子吧。就说选课的吧,李明选了A课。数据库已经有了李明选A课的记录了。之后李明又选了B课,那么我的操作就是需要1.把李明选B课的记录插进去2.查询李明一共选了几个课程,把结果统计出来插入到另一张表。

当然,现实中可能统计的不仅仅是总数,还需要统计很多项,所以我不想把刚插入的实体作为参数传到其他地方,我要在没有savechanges之前能查出来。

支持(0) 反对(0) RyanCheng | 园豆:474 (菜鸟二级) | 2012-11-01 23:01

@RyanCheng: 你完全可以在insert B以后,再select一下。也能完成你的目标

支持(0) 反对(0) chenping2008 | 园豆:9836 (大侠五级) | 2012-11-02 10:22
0

插入后刷新一下。然后设置刷新结果更新的属性试试看怎么样!

bos_kg | 园豆:7 (初学一级) | 2012-11-02 13:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册