Как запросить базу данных для записи, используя Identity UserId в методе OnGetAsyn c - PullRequest
0 голосов
/ 17 апреля 2020

Итак, у меня есть веб-приложение Razor Pages, которое я сейчас разрабатываю с использованием последних версий EF Core, ASP. NET, ASP. NET Identity, et c.

Я пытаюсь сделать так, чтобы мой текущий вошедший в систему Пользователь использовал метод OnGetAsyn c на одной из моих страниц Razor, но я также хочу получить только последнюю запись данных, созданную вошедшим в систему пользователем. пользователь для отображения с моей страницей Razor .cs html файл.

Я пытался реализовать методы UserManager, найденные здесь в stackoverflow и в других местах, но я продолжаю получать 2 следующие ошибки в моей строке кода, где я сравниваю моего вошедшего в систему пользователя со столбцом userid в БД рассматриваемая таблица сущностей:

При следующей настройке кода

public async Task<IActionResult> OnGetAsync()
    {
        var userId = await _userManager.GetUserAsync(User);
        string UserId = Convert.ToString(userId);


        if (UserId == null)
        {
            return NotFound();
        }

        ForecastCinema = await _context.ForecastsCinema
            .Where(f => f.UserId == userId);
    }

"Оператор" == "нельзя применить к операндам типа 'строка' и 'AppUser' ".

AppUser - имя таблицы User в моей базе данных для. Net Identity

И с другим типом форматирования кода, другая ошибка чуть ниже

public async Task<IActionResult> OnGetAsync()
    {
        var userId = await _userManager.GetUserAsync(User);
        string UserId = Convert.ToString(userId);


        if (UserId == null)
        {
            return NotFound();
        }

        ForecastCinema = await _context.ForecastsCinema
            .Where(f => f.UserId == UserId);
    }

"IQueryable doest не содержит определения для 'GetAwaiter', и доступный метод расширения 'GetAwaiter', принимающий первый аргумент типа 'IQueryable, не может быть найден ( Вы пропускаете директиву по использованию или ссылку на сборку?) "

Может кто-нибудь пожалуйста, пожалуйста, помогите мне увидеть, что здесь происходит? Я попытался "преобразовать" мои претензии UserManager в строку, но без преобладания, это не работает. Я приложил код рассматриваемого метода чуть ниже для справки. Заранее спасибо за помощь и понимание товарищей кодеров :) 1027 *

1 Ответ

0 голосов
/ 17 апреля 2020

"Оператор '==' нельзя применить к операндам типа 'string' и 'AppUser'"

Я ожидаю, что, как говорится в сообщении об ошибке, это буквально означает, что вы сравниваете два типа, используя == ,

Первое, что я вижу, это то, что вы сравниваете f.UserId с userId, который вы получили от

await _userManager.GetUserAsync(User);

Это, кажется, дает вам объект User, а не просто Id.

«IQueryable не содержит определения для« GetAwaiter », и невозможно найти доступный метод расширения« GetAwaiter », принимающий первый аргумент типа« IQueryable »(отсутствует директива using или ссылка на сборку?)»

Как говорится в сообщении об ошибке, это не Asyn c Тип задачи, поэтому вы не можете использовать "await" перед ним. Попробуйте без ожидания для запроса результата. Я считаю, что это относится к этому коду:

await _context.ForecastsCinema
        .Where(f => f.UserId == UserId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...