实体框架的交易问题4

时间:2010-09-29 12:47:49

标签: entity-framework msdtc

我正在尝试使用实体框架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();
    }
}

1 个答案:

答案 0 :(得分:1)