Отключение транзакций в Entity Framework

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

У нас есть Informix DB, которая не поддерживает транзакции - возможно ли использовать 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 ответ

Решение

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

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

Другие вопросы по тегам