Как увеличить значение одного поля одним запросом - PullRequest
1 голос
/ 29 января 2020

Я бы хотел, чтобы EF генерировал запрос SQL, например:

UPDATE Users 
SET CurrentTurn = CurrentTurn + 1 
WHERE id = 1 

В текущей реализации мне нужно использовать два запроса:

public void MakeTurn(int userId)
{
    var user = _storageContext.Users.Find(userId);
    user.CurrentTurn++;
    _storageContext.SaveChanges();
}

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int CurrentTurn { get; set; }
}

1 Ответ

1 голос
/ 29 января 2020

Если вы хотите сделать это за одну поездку БД, насколько я знаю, вам нужно установить стороннюю библиотеку, такую ​​как EntityFramework-Plus :

_storageContext.Users.Where(x => x.Id==userId)
               .Update(x => new User() { CurrentTurn = x.CurrentTurn+1 });

В github На странице вы найдете инструкцию о пакете nuget, который вам нужно установить, в вашем случае:

PM> Install-Package Z.EntityFramework.Plus.EFCore

Если вы хотите увидеть другие варианты, вы можете проверить эту ссылку , но я всегда использую цитируемую библиотеку в таких случаях, как ваш

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...