Я пытаюсь реализовать транзакцию с помощью Entity Framework 4. Из того, что я прочитал, приведенный ниже код является правильным. SaveChanges работает нормально, но как только я нажимаю на первый вызов ExecuteFunction, я получаю следующее исключение:
Основной поставщик не удалось
Открыто. --->
System.Transactions.TransactionManagerCommunicationException:
Доступ к сети для распределенных
Менеджер транзакций (MSDTC) был
отключен. Пожалуйста, включите DTC для
доступ к сети в безопасности
Конфигурация для MSDTC с использованием
Компонент Услуги Административный
инструмент.
Я вошел в систему на сервере базы данных и не вижу службы с именем диспетчера распределенных транзакций, но вижу координатора распределенных транзакций, и он запущен. Я не уверен, что мне нужно изменить, чтобы это работало. Кто-нибудь знает? Спасибо.
Вот код.
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();
}
}