Платформа объекта с NOLOCK

Как я могу использовать NOLOCK функция на Платформе Объекта? Действительно ли XML является единственным способом сделать это?

136
задан Reinstate Monica 18 October 2019 в 12:45
поделиться

2 ответа

Нет, но вы можете запустить транзакцию и установить уровень изоляции на чтение без фиксации . По сути, это то же самое, что и NOLOCK, но вместо того, чтобы делать это для каждой таблицы, он будет делать это для всего в рамках транзакции.

Если это похоже на то, что вы хотите, вот как вы могли бы это сделать. it ...

//declare the transaction options
var transactionOptions = new System.Transactions.TransactionOptions();
//set it to read uncommited
transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted;
//create the transaction scope, passing our options in
using (var transactionScope = new System.Transactions.TransactionScope(
    System.Transactions.TransactionScopeOption.Required, 
    transactionOptions)
)

//declare our context
using (var context = new MyEntityConnection())
{
    //any reads we do here will also read uncomitted data
    //...
    //...
    //don't forget to complete the transaction scope
    transactionScope.Complete();
}
204
ответ дан 23 November 2019 в 23:37
поделиться

Нет, не совсем - Entity Framework - это, по сути, довольно строгий уровень над вашей реальной базой данных. Ваши запросы формулируются на ESQL - Entity SQL - который в первую очередь ориентирован на вашу модель сущностей, и поскольку EF поддерживает несколько бэкэндов базы данных, вы не можете отправлять «родной» SQL прямо в бэкэнд.

Запрос NOLOCK подсказка - это специфическая вещь SQL Server, и она не будет работать ни с одной из других поддерживаемых баз данных (если только они не реализовали ту же подсказку - в чем я сильно сомневаюсь).

Marc

2
ответ дан 23 November 2019 в 23:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: