Отключение транзакций в 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 не должны работать (если не существует более новой версии провайдера).