使用实体框架(在我的例子中首先是代码),我有一个操作需要我调用 SaveChanges 来更新数据库中的一个对象,然后再次调用 SaveChanges 来更新另一个对象。(我需要第一个 SaveChanges 来解决 EF 无法确定首先更新哪个对象的问题)。
我试着做:
using (var transaction = new TransactionScope())
{
// Do something
db.SaveChanges();
// Do something else
db.SaveChanges();
tramsaction.Complete();
}
当我运行它时,我在第二次调用时遇到异常SaveChanges
,说“底层提供程序在打开时失败”。内部异常说我的机器上没有启用 MSDTC。
现在,我在其他地方看到了描述如何启用 MSDTC 的帖子,但似乎我还需要启用网络访问等。这听起来完全是矫枉过正,因为没有涉及其他数据库,更不用说其他服务器了。我不想做一些会使我的整个应用程序不那么安全(或更慢)的事情。
当然必须有一种更轻量级的方法来做到这一点(最好没有 MSDTC)?!