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之前能查出来。
//获取将要添加状态的 实体集合 IEnumerable<ObjectStateEntry> oseList = Entities.ObjectStateManager.GetObjectStateEntries(EntityState.Added); foreach (var item in oseList) { TBTable1 tb= (TBTable1)item.Entity; Console.WriteLine(tb.Id); }
这个做法貌似可以,非常感谢,等我试过之后给你打分
insert 跟select 不需要在一个事务中啊
一般都是insert和insert ,insert 和delete ,还有update 等等需要用到事务,你这个完全不需要事务的
谢谢你的回答。
我给你举个例子吧。就说选课的吧,李明选了A课。数据库已经有了李明选A课的记录了。之后李明又选了B课,那么我的操作就是需要1.把李明选B课的记录插进去2.查询李明一共选了几个课程,把结果统计出来插入到另一张表。
当然,现实中可能统计的不仅仅是总数,还需要统计很多项,所以我不想把刚插入的实体作为参数传到其他地方,我要在没有savechanges之前能查出来。
@RyanCheng: 你完全可以在insert B以后,再select一下。也能完成你的目标
插入后刷新一下。然后设置刷新结果更新的属性试试看怎么样!