FromSql выдает InvalidOperationException - PullRequest
0 голосов
/ 29 мая 2018

У меня проблемы с пониманием предложения FromSql, которое вызывает хранимую процедуру.Чего я хочу добиться: я хочу запросить у пользователя имя пользователя и пароль.Если я введу правильные учетные данные, все работает нормально.Предложение FromSql заполняет мой объект значениями.Хорошо пока.Что меня беспокоит, так это следующий сценарий: если я запускаю приложение заново и ввожу неправильные учетные данные в первый раз , я получаю следующее исключение:

Microsoft.EntityFrameworkCore.Query:Error: An exception occurred in the database while iterating the results of a query for context type 'xyz.DatabaseContext'.
System.InvalidOperationException: The required column 'Id' was not present in the results of a 'FromSql' operation.

Я такжепонять это исключение.Хранимая процедура возвращает 0, если пользователь не найден, и EF пытается отобразить этот «пустой» результат в объект, который завершается неудачей.

Теперь вот странная вещь: если я попробую его с пользователем с действительными учетными данными и впоследствии введите неверные учетные данные, исключений не возникает.У queryResult есть счетчик 0, что является своего рода ожидаемым.Это смущает меня.Почему происходит сбой при первой «неправильной» попытке, и после этого работает успешный результат?

Вот вызов хранимой процедуры:

queryResult = await mDatabaseContext.MyModelObject
         .FromSql($"myStoredProcedure {null}, {username}, {password}, {null}, {null}, {null}")
         .OrderBy(x => x.ID).ToListAsync();

Конфигурация: In Startup.cs Iдобавьте DatabaseContext как singleton

services.AddDbContext<DatabaseContext>(
        options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")),
        ServiceLifetime.Singleton);

Я использую DatabaseContext через Dependency-Injection, где я вызываю FromSql, который я описал выше.

Любая помощь приветствуется.

Заранее спасибо!

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