Ошибка при использовании await для добавления элементов в базу данных C# - PullRequest
0 голосов
/ 24 марта 2020

Пример кода:

static async Task Main(string[] args)
{
    using (var context = new DBContext())
        {
            await context.Objects.Add(new Level
            {  
                Id = 1,
                Name = "Name 1"
            });
        }
}

Создает ошибку:

Objects does not contain a definition for 'GetAwaiter' and no accessible extension method 'GetAwaiter' accepting a first argument of type 'Objects' could be found.

Это база данных TPH, Объекты класса на вершине иерархии.

Понятия не имею как это исправить, я не уверен, почему это не работает здесь. Я слышал, что это может быть проблема с использованием более старого C# (я не использую 8.0, потому что не могу его обновить).

1 Ответ

2 голосов
/ 24 марта 2020

Добавление не выполняет никаких тяжеловесных операций. Он просто добавляет объект в контекст в памяти, а не в базу данных. Поэтому нет смысла (или возможности) делать это асинхронно.

Данные отправляются в базу данных только тогда, когда вы делаете

context.SaveChanges();

, поэтому вы можете сделать

await context.SaveChangesAsync() 

на тот момент.

...