База данных не обновляется с помощью TransactionScope - PullRequest
1 голос
/ 15 мая 2010

У меня есть клиент, пытающийся связаться со службой 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 (), но новые платежные данные просто не добавляются в базу данных!

Ответы [ 2 ]

0 голосов
/ 19 мая 2010

Добавляет ли он строки при удалении TransactionScope?

0 голосов
/ 15 мая 2010

Возможно, вы захотите взглянуть на это How-To по созданию транзакционных сервисов, чтобы убедиться, что вы полностью указали семантику транзакции. Часть кода для этого отсутствует в вашем вопросе. Вы можете также рассмотреть возможность настройки трассировки, как в этой статье , чтобы получить больше информации.

...