Базы данных обычно хранят логические флаги как битовые поля со значениями 1 или 0. EF отобразит их в сущности как логический тип.Обычно в вашем коде вы просто используете bool
в качестве типа данных для методов и свойств для флага, подобного этому.Если вы все еще хотите преобразовать его в Int, тогда вам также необходимо рассмотреть, было ли значение БД нулевым или нет:
Если значение БД не имеет нулевого значения:
return query.Single() ? 1 : 0;
FirstOrDefault
следует использовать только с предложением order-by в тех случаях, когда вы ожидаете 0 или много возможных результатов.Если вы ожидаете 1 пользователя с таким идентификатором, используйте Single
.Это приведет к исключению, если идентификатор пользователя не соответствует записи или если было возвращено более 1 записи.Использование OrDefault
вариантов приведет к сбою, если запись пользователя не найдена.Если вы хотите явно проверить и обработать возможность того, что никакой записи не существует, используйте метод OrDefault
, в противном случае лучше обрабатывать его как исключение.
Если значение БД для запроса является нулевым:
bool? isValid = query.Single();
return isValid.HasValue && isValid.Value ? 1 : 0;
Это проверяет значение и возвращает 1, если значение присутствует, и True, в противном случае возвращается 0.