如何在EF中做到事务的效果呢?

coffee_sugar 2013-03-16 10:39:00
新手刚接触EF,先说下我的环境。
我的数据库SQL CE的,然后用了EF code first 方式生成的SQL CE数据库,再然后我这里面有个添加操作是涉及到多个表的,我想问下怎么才能做到SQLServer中事务的效果呢?
...全文
1444 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
paopao_426 2015-03-27
  • 打赏
  • 举报
回复
引用 10 楼 z1119815468 的回复:
[quote=引用 7 楼 kzl332058242 的回复:] 我看到大神们都在说,要在同一个上下文中。话说、这怎么控制上下文实例的唯一啊
采用单例模式[/quote] 单例还是免了,那么多数据都用一个上下文,能保证数据一致性和线程安全性?并发怎么搞?
蓝色羽翼 2014-05-06
  • 打赏
  • 举报
回复
引用 7 楼 kzl332058242 的回复:
我看到大神们都在说,要在同一个上下文中。话说、这怎么控制上下文实例的唯一啊
采用单例模式
wangsen2235068 2013-06-17
  • 打赏
  • 举报
回复
如果不是在同一个数据库,也就是不同上下文,就要手动写代码了?
机器人 2013-03-18
  • 打赏
  • 举报
回复
就是保证事务中的 ObjectContext 是在一个地方new 出来的。 另外推荐用隐式事务:TranscationScope 这个对象。代码上网搜搜吧,很多
coffee_sugar 2013-03-17
  • 打赏
  • 举报
回复
我看到大神们都在说,要在同一个上下文中。话说、这怎么控制上下文实例的唯一啊
笨笨熊三号 2013-03-17
  • 打赏
  • 举报
回复
using (CostManagementSystemEntities ent = new CostManagementSystemEntities())//在这个上下文里
{
tablename1 t1=new tablename1 ();//表1
tablename2 t2=new tablename2 ();//表2
ent.tablename1.AddObject(t1);
ent.tablename2.AddObject(t2);

ent.SaveChanges();
}
只有ent.SaveChanges()时表1和表2才会插入数据,而且如果其中一个插入失败另一个也不会插入,你想要的效果,就这么简单
yaotomo 2013-03-17
  • 打赏
  • 举报
回复

DbConnection con = ((IObjectContextAdapter)ctx).ObjectContext.Connection;
con.Open();
using (var tran = con.BeginTransaction())
{
// 这里才是事务中的代码

tran.Commit();
}
con.Close(); 
coffee_sugar 2013-03-17
  • 打赏
  • 举报
回复
引用 3 楼 winner2050 的回复:
使用代码描述数据库,可不简单,得把所有语法都学齐全了。 EF本身就自带事务,同一个上下文就行了。
明白你说的意思了。 可惜自己对EF了解的太少了、好多地方还是感觉很迷糊
coffee_sugar 2013-03-16
  • 打赏
  • 举报
回复
有木有人啊、我知道今天是周六,但应该有上班的吧?上班就应该有来逛论坛的吧? 小弟被这问题困扰好久了啊。。。。。
coffee_sugar 2013-03-16
  • 打赏
  • 举报
回复
等大神们指导啊
winner2050 2013-03-16
  • 打赏
  • 举报
回复
使用代码描述数据库,可不简单,得把所有语法都学齐全了。 EF本身就自带事务,同一个上下文就行了。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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