Entity Framework Core не добавляет записи - PullRequest
1 голос
/ 31 мая 2019

Я пытаюсь добавить набор записей с помощью Entity Framework Core. По какой-то причине я не могу получить записи для фактического сохранения в базе данных.

Ниже приведен код запуска. Исключений нет.

using (var context = new UserEntity.UsersContext())
{
    foreach(var u in users)
    {
        var tempUser = await context.User.FirstOrDefaultAsync(x => x.Username == u.Username);

        if (tempUser == null)
        {
            context.Add(u);
        }

        await context.SaveChangesAsync();
    }                
}

Когда я смотрю отладчик, программа перестает работать, когда доходит до вызова FirstOrDefaultAsync. Если я удаляю это, программа будет работать нормально, но SaveChangesAsync все еще фактически не вставляет записи в базу данных.

Может кто-нибудь посоветовать? Спасибо

Редактировать 1:

await DataWork(smallList);

Редактировать 2 РАЗРЕШЕНИЕ!:

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

Мое решение ниже:

MyAsyncMethod().Wait();

Вот и все. Это работает после этого. Спасибо всем, что потратили время, чтобы попытаться помочь мне, это подтолкнуло меня в правильном направлении

1 Ответ

0 голосов
/ 31 мая 2019

Вы в настоящее время смешиваете асинхронные и не асинхронные вызовы. В настоящее время методы Add должны иметь вид AddAsync

Если вы хотите асинхронную операцию, ваш код должен быть:

using (var context = new UserEntity.UsersContext())
        {
            foreach(var u in users)
            {
                var tempUser = await context.User.FirstOrDefaultAsync(x => x.Username == u.Username);
                if (tempUser == null)
                {
                    await context.AddAsync(u);
                }

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