У меня есть клиент, пытающийся связаться со службой WCF транзакционным способом. Клиент передает некоторые данные службе, и служба соответственно добавляет данные в свою базу данных. По какой-то причине новые данные, которые служба отправляет в свою базу данных, не сохраняются. Когда я просматриваю данные таблицы в обозревателе серверов, новые строки не добавляются ...
Ниже приведены соответствующие фрагменты кода:
Клиент
static void Main()
{
MyServiceClient client = new MyServiceClient();
Console.WriteLine("Please enter your name:");
string name = Console.ReadLine();
Console.WriteLine("Please enter the amount:");
int amount = int.Parse(Console.ReadLine());
using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required))
{
client.SubmitData(amount, name);
transaction.Complete();
}
client.Close();
}
Услуги
Примечание. Я использую Entity Framework для сохранения объектов в базе данных.
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void SubmitData(int amount, string name)
{
DatabaseEntities db = new DatabaseEntities();
Payment payment = new Payment();
payment.Amount = amount;
payment.Name = name;
db.AddToPayment(payment); //add to Payment table
db.SaveChanges();
db.Dispose();
}
Я предполагаю, что это как-то связано с использованием TransactionScope в клиенте. Я также перепробовал все комбинации db.SaveChanges () и db.AcceptAllChanges (), но новые платежные данные просто не добавляются в базу данных!