0

有没有办法在不需要事务的情况下在 db.submitchanges 之后回滚?

不得不为日志运行专门的服务将是一种耻辱。是否有替代回滚而不使用该特殊服务的方法?

提前致谢!

编辑:

我真正想要的:我有 2 个数据库交互,我想一个接一个地做。

比方说,我想在数据库表“插槽”中添加一些内容。提交后,我可以收到由自动增量创建的Id。

那个Id,我想用来在数据库中插入一个新的日志。但是当插入日志失败时,我也想回滚“插槽”中的操作..

我相信这是可能的交易,但似乎我无法做到这一点而不会出错。即使所有服务器都设置为允许它们并且防火墙已关闭..

4

2 回答 2

0

不。

db.SubmitChanges()正在打开交易本身,因此避免它不是一种选择。

不确定您对登录服务的含义,我猜您的意思是您使用数据库进行日志记录,并且您使用相同的数据上下文将日志写入数据库和业务数据,因此您的业务数据可能会失败(所以事务的回滚)并且您的日志记录也被回滚。

最简单的解决方案是为您的日志记录使用单独的数据上下文。

更新 您的情况不需要多个 SubmitChanges,因为您不需要 ID,您可以将实体添加到日志中。看看这里 如何在不提交和重新查询的情况下获取记录的 ID?

而且由于您只能在 SubmitChanges 上拥有,所有这些都将在一个事务中进行,并且它将完全按照您的意愿进行

于 2013-05-07T18:44:10.347 回答
-1

您应该同时插入插槽和日志。

我不知道您的数据模型是如何建立但简化的。

Log myLog = new Log();
Slot mySlot = new Slot();
...
...

DataContext db = new DataContext();

db.Slots.InsertOnSubmit(mySlot);

myLog.Slot = mySlot;
myLog.... = ....;

db.Logs.InsertOnSubmit(myLog);

db.SubmitChanges();
于 2013-05-14T06:16:48.200 回答