Я использую MVC 3 с Entities, теперь я использовал приведенную ниже строку кодов с моего контроллера
using (var scope = new TransactionScope())
{
_myRepository.DeleteFM1(id);
_myRepository.DeleteFM2(id, name);
scope.Complete();
}
и внутри моего метода DeleteFM2, который является моим методом, определенным в классе Entity, выглядит следующим образом:
public void DeleteFM2(int id, string name)
{
var data= _repositoryMD.Fetch().Where(mColl => mColl.Col1 == id);
if (data!= null)
{
//insert here is giving some error MSDTC error !
// here I prepare a message using the '**data**'
_repositoryHistory.Insert(name, message, "FM2", "Delete", dateTime);
_repositoryMD.Attach(data);
_repositoryMD.Delete(data);
_repositoryMD.SaveChanges();
}
}
}
и у меня есть отдельный класс, где я определил метод Insert как
public bool Insert(string realName, string logMessage, string tableName, string changeType, DateTime dateTime)
{
var history = new History
{
ModifiedBy = realName,
ChangeType = changeType,
DateModified = dateTime,
LogMessage = logMessage,
TableName = tableName
};
_repositoryHistory.Add(history);
_repositoryHistory.SaveChanges();
return true;
}
После вставки этой строки кода в указанный выше метод DeleteFM2
_repositoryHistory.Insert(name, message, "FM2", "Delete", dateTime);
Я получаю эту ошибку, без этой строки мой код работает очень хорошо, я использовал эту строку во всех своих других методах даже там, где я там использовал Transaction Scope, но я все еще не понимаю, как это понимать здесь, Пожалуйста помоги. Благодаря
Исходный провайдер не смог открыть Open.
System.Transactions.TransactionManagerCommunicationException: Не удалось связаться с основным менеджером транзакций. --- > System.Runtime.InteropServices.COMException: транзакция MSDTC менеджер не смог вытащить транзакцию из исходной транзакции из-за проблем с коммуникацией. Возможными причинами являются: брандмауэр присутствует и не имеет исключения для процесса MSDTC, две машины не могут найти друг друга по именам NetBIOS или поддержка сетевых транзакций не включена для одного из двух менеджеров транзакций. (Исключение из HRESULT: 0x8004D02B) в System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte [] propgationToken, IntPtr managedIdentifier, Guid & Идентификатор транзакции, OletxTransactionIsolationLevel & isolLevel, ITransactionShim & transactionShim) в System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(байт [] propagationToken) --- Конец внутренней трассировки стека исключений --- at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(байт [] распространениеToken) в System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction tx) в System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction tx) в System.Transactions.EnlistableStates.Promote(InternalTransaction tx) в System.Transactions.Transaction.Promote() at System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction транзакции) при System.Transactions.TransactionInterop.GetExportCookie(Transaction транзакция, байт [] местонахождение) в System.Data.SqlClient.SqlInternalConnection.GetTransactionCookie(Transaction транзакция, Byte [] whereAbouts) в System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx) в System.Data.SqlClient.SqlInternalConnection.Enlist(транзакция tx) в System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction транзакции) при System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction транзакции) при System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) в System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection владеющий связью) при System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection externalConnection, DbConnectionFactory connectionFactory) при System.Data.SqlClient.SqlConnection.Open() at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String попыткаOperation, Логическое & closeStoreConnectionOnFailure)
Настройки My FireWall