2014-08-25 4 views
5

Я вызываю хранимую процедуру в Entity Framework 6, которая может при необходимости создавать базы данных и таблицы. Это бросает ошибку;Сохраненная процедура без транзакции в Entity Framework

сообщение «CREATE DATABASE заявление не допускается в транзакции нескольких операторов. \ Г \ nALTER утверждение DATABASE не допускается в транзакции с несколькими операторами. \ Г \ nБаза данных„CoreSnapshotJS3“не существует. Убедитесь, что имя правильно введен. " Строка

Я не хочу его в сделке, и использовали это для подавления сделки

using (var transation = new TransactionScope(TransactionScopeOption.Suppress)) 
{ 
    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("spCreateSnapshotFromQueue", snapshotQueueIDParameter);  
} 

Он по-прежнему выдает ошибку.

Как остановить автоматические транзакции?

ответ

20

Я нашел способ:

var snapshotQueueIDParameter = new SqlParameter("SnapshotQueueID", entityId); 
return _db.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, 
     "EXEC spCreateSnapshotFromQueue @SnapshotQueueID", snapshotQueueIDParameter); 
+0

Есть ли способ запустить storedproecdure без операции, которая фактически выполняет DQL - Select. Мне нужен результат также без использования какого-либо выходного параметра в хранимой процедуре. – Riky

+0

Спасибо, сработало. – srikasi

Смежные вопросы