我在使用 Entity Framework(代码优先方式)时,有一个操作需要我调用 SaveChanges 来更新数据库中的一个对象,然后再次调用 SaveChanges 来更新另一个对象(我需要第一次 SaveChanges 来解决 EF 无法确定首先更新哪个对象的问题)。
我尝试过:
using (var transaction = new TransactionScope())
{
// Do something
db.SaveChanges();
// Do something else
db.SaveChanges();
tramsaction.Complete();
}
我运行代码时,第二个SaveChanges
调用会引发异常,错误信息为“底层提供程序在打开时失败”。内部异常表示我的计算机上未启用MSDTC。
现在,我已经在其他地方看到了启用MSDTC的帖子,但似乎我还需要启用网络访问等。这听起来对于这里而言完全是过度杀手,因为没有涉及其他数据库,更不用说其他服务器了。我不想做任何可能使整个应用程序不安全(或变慢)的事情。
肯定有一种更轻量级的方法可以实现这一点(最好不需要使用MSDTC)吧?!