Entity Framework Core таблица пессимистической блокировки строк Mysql - PullRequest
0 голосов
/ 28 января 2019

Как я могу использовать sql-запрос в EF Core, как, например, this._context.Person.FirstOrDefault(a => a.id==1).ForUpdate()

SELECT * FROM person WHERE id = 1 FOR UPDATE;

в EF-ядре. Я нахожу реализацию оптимистичного параллелизма с EF Core ([ConcurrencyCheck], сСвободный API ".IsConcurrencyToken ();"), но это не решило мою проблему

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Для решения моего вопроса я использую этот подход:

this._context.Person.FromSql($"SELECT * FROM person WHERE id= { personId } FOR UPDATE").FirstOrDefaultAsync();

В Github уже открыт вопрос https://github.com/aspnet/EntityFrameworkCore/issues/6717

Когда этот вопрос будет решен (закрыт), тогда мы можем сделать, как я хочу

0 голосов
/ 28 января 2019

вы можете использовать TransactionScope под System.Transactions

using (var scope = new TransactionScope())
{
  var person = this._context.Person.FirstOrDefault(a => a.id==1);
  person.Col1 = "John Doe";
  this._context.Person.Update(person);

  this._context.SaveChanges();
  scope.Complete();
}
...