我正在尝试使用实体框架4实现一个事务。从我读过的,下面的代码是正确的。 SaveChanges工作正常,但是当我点击第一个ExecuteFunction调用时,我得到以下异常:
基础提供商失败了 打开。 ---> System.Transactions.TransactionManagerCommunicationException: 分布式网络访问 交易经理(MSDTC)已经 禁用。请启用DTC 安全中的网络访问 MSDTC的配置使用 组件服务管理 工具。
我已登录到数据库服务器,但我没有看到名为Distributed Transaction Manager的服务,但我确实看到了分布式事务处理协调器,它已启动。我不确定我需要改变什么来让它工作。谁知道?感谢。
这是代码。
using (var h = new WhaleEntities(ConnectionHelper.DBConnectString))
{
using (TransactionScope ts = new TransactionScope())
{
h.Sites.AddObject(s);
h.SaveChanges(SaveOptions.DetectChangesBeforeSave);
retval = s.SiteID;
h.ExecuteFunction("UpdateSiteInterfaceList", new ObjectParameter("pSiteID", retval), new ObjectParameter("pList", "10"));
h.ExecuteFunction("UpdateSiteInterfaceRequiredList", new ObjectParameter("pSiteID", retval),new ObjectParameter("pList", "Email"));
h.ExecuteFunction("UpdateSiteInterfaceAlwaysShownList", new ObjectParameter("pSiteID", retval),new ObjectParameter("pList", "10"));
h.ExecuteFunction("UpdateSiteInterfaceAlwaysRequiredList",new ObjectParameter("pSiteID", retval),new ObjectParameter("pList", "Email"));
ts.Complete();
//changes must be accepted manually once transaction succeeds.
h.AcceptAllChanges();
}
}