У меня большая проблема с использованием или пониманием использования транзакции с wsdualhttpbinding WCF.
У меня есть что-то вроде этого:
IService:
[ServiceContract]
public interface IService
{
//...
[OperationContract]
[ApplyDataContractResolver]
[TransactionFlow(TransactionFlowOption.Mandatory)]
bool SaveDevice(Device device);
//...
}
Service.svc.cs:
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class Service : IService
{
[OperationBehavior(TransactionScopeRequired = true)]
public bool SaveDevice(Device device)
{
bool temp = false;
Transaction transaction = Transaction.Current;
using (EntityConn context = new EntityConn())
{
try
{
//....
}
}
}
}
Model.cs
Итак, я в моем клиенте пытаюсь выполнить операцию с требованиями транзакции:
if (Transaction.Current.TransactionInformation.DistributedIdentifier == Guid.Empty)
{
using (var scope = new TransactionScope(TransactionScopeOption.Suppress))
{
try
{
//do some stuff
}
}
}
Ну, я получаю сообщение об ошибке: Transaction.Current пуст
- Я на правильном пути?
- Когда нет, как я могу это решить?
Спасибо за помощь
РЕДАКТИРОВАТЬ : Мне просто нужно было поместить if после использования
using (var scope = new TransactionScope(TransactionScopeOption.Suppress))
{
if (Transaction.Current.TransactionInformation.DistributedIdentifier == Guid.Empty)
{
try
{
//do some stuff
}
}
}