有没有办法在db.submitchanges之后回滚而不需要事务?
为日志记录运行特殊服务将是一种耻辱。是否可以选择回滚而不使用该特殊服务?
提前感谢!
编辑:
我真正想要的是:我希望彼此之后进行2次数据库交互。
让我们说,我想在数据库表'Slots'中添加一些东西。提交之后,我可以收到由自动增量创建的ID。
该Id,我想用于在数据库中插入新日志。但是当插入日志失败时,我也希望在'Slots'中回滚动作..
这可能与我相信的交易有关,但似乎我不能在没有错误的情况下做到这一点。即使所有服务器都设置为允许它们并且防火墙已关闭..
答案 0 :(得分:0)
没有
db.SubmitChanges()
正在打开一个自己的交易,所以避免它不是一个选择。
不确定您对登录服务的意思,我想您的意思是您使用数据库进行日志记录,并且您使用相同的datacontext将日志写入数据库和业务数据,因此可能会发生您的业务数据失败(因此回滚事务)以及您的日志记录都已回滚。
最简单的解决方案是使用speparate datacontext进行日志记录。
<强>更新强> 在您的情况下不需要多个SubmitChanges,因为您不需要ID,您可以将实体添加到日志中。看看这里 How do I get Id of a record without submitting and re-querying?
由于你只能在SubmitChanges上,它将全部在一个交易中,它将完全按照你想要的那样做
答案 1 :(得分:-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();