Отключение транзакций в Entity Framework - PullRequest
5 голосов
/ 15 февраля 2012

Мы пытаемся реализовать быстрый прототип, чтобы доказать, что что-то возможно с Entity Framework ...

У нас есть база данных Informix, которая не поддерживает транзакции - возможно ли использовать Entity Frameworkс этим?

У нас есть работающая модель и работающие провайдеры, но, похоже, мы не можем выполнить запрос CRUD без запуска транзакций - мы даже пытались их превзойти ...

[Test]
public void TestMethod1()
{
    entities ent = new entities();

    var a = ent.brands.Select(x => x);

    using (TransactionScope trans = new TransactionScope(
                                          TransactionScopeOption.Suppress))
    {
         ent.brands.AddObject(new brand() { br_name = "New Test Brand" });
         ent.SaveChanges();
    }
}

Ошибка, которую мы получаем, приведена ниже:

Произошла ошибка при запуске транзакции по соединению провайдера.Подробности смотрите во внутреннем исключении.

Я огляделся по сторонам и предложил использовать подавление, но, похоже, оно не работает ... какие-то идеи?

1 Ответ

3 голосов
/ 16 февраля 2012

Чтобы ответить на ваш главный вопрос (я ничего не знаю о Informix) - вы не можете подавить транзакцию. Если SaveChanges не находит существующую транзакцию, она всегда начинает новую на провайдере. Ключевой особенностью EF является запуск SaveChanges в транзакции.

Btw. Я проверил IBM Data Provider и обнаружил, что поддерживается только EFv1, поэтому функции из EFv4 и EFv4.1 не должны работать (если не существует более новой версии провайдера).

...