1. Почему запрос вызывает конструктор?
Начиная с EF Core 2.1, теперь можно определить конструктор с параметрами и заставить EF Core вызывать этот конструктор при создании экземпляра сущности. Параметры конструктора могут быть привязаны к сопоставленным свойствам или к различным видам служб, чтобы облегчить поведение, такое как отложенная загрузка.
Когда EF Core создает экземпляры этих типов, например, для результатов запроса, он будет сначала вызовите конструктор без параметров по умолчанию, а затем установите для каждого свойства значение из базы данных. Однако, если EF Core находит параметризованный конструктор с именами параметров и типами, соответствующими сопоставленным свойствам, он вместо этого вызовет параметризованный конструктор со значениями для этих свойств и не будет явно устанавливать каждое свойство.
https://docs.microsoft.com/en-us/ef/core/modeling/constructors
2. Почему [Пароль] отличается, каково правило?
На основе документации Microsoft вы можете сопоставить результаты запроса со свойствами сущности по следующему соглашению:
Типы параметров и имена должны соответствовать типам и именам свойств, за исключением того, что свойства могут быть Pascal в регистре, в то время как параметры - в верблюжьем.
Если вы не принимаете параметр для спецификации c свойство, которое оно будет отображать неявно. поэтому Salt заполняется из запроса, а Password заполняет конструктор.
Postscript : установка свойства другим свойством в конструкторе не является хорошей практикой. потому что порядок объявления или утверждений может повлиять на конечный результат. например В вашем случае, когда вы меняете строки 19,20 друг с другом в в этом примере вы получите ожидаемый результат, и это неприятный запах в вашем коде.
введите описание изображения здесь