使用EF6,您可以使用新交易,例如:
using (var context = new PostEntityContainer())
{
using (var dbcxtransaction = context.Database.BeginTransaction())
{
try
{
PostInformation NewPost = new PostInformation()
{
PostId = 101,
Content = "This is my first Post related to Entity Model",
Title = "Transaction in EF 6 beta"
};
context.Post_Details.Add(NewPost);
context.SaveChanges();
PostAdditionalInformation PostInformation = new PostAdditionalInformation()
{
PostId = (101),
PostName = "Working With Transaction in Entity Model 6 Beta Version"
};
context.PostAddtional_Details.Add(PostInformation);
context.SaveChanges();
dbcxtransaction.Commit();
}
catch
{
dbcxtransaction.Rollback();
}
}
}
当事情横盘整理时,是否真的需要回滚?我很好奇,因为“提交”说明中说:“提交基础商店交易。”
而“回滚”说明说:“回滚基础商店交易。”
这让我感到好奇,因为在我看来,如果不调用Commit,以前执行的命令将不会被存储(对我来说这是合乎逻辑的)。但是,如果是这种情况,调用Rollback函数的原因是什么?在EF5中,我使用了TransactionScope,它没有回滚功能(只有完整功能),这对我来说似乎很合理。由于MS DTC的原因,我不能再使用TransactionScope,但也不能像上面的示例那样使用try catch(即,我只需要Commit)。