Интересно, что электронная почта является частью ожидаемых полей данных.
Позвольте мне уточнить ... если вы установите для RequuniqueEmail значение true для поставщика SQL, электронная почта НЕ потребуется, строго говоря. Это просто означает, что каждому пользователю придется использовать адрес электронной почты, отличный от любого другого пользователя. Таким образом, может быть один пользователь без адреса электронной почты. В базе данных будет установлено нулевое значение. Но никакой другой пользователь не сможет опустить адрес электронной почты после этого, потому что это приведет к тому, что два пользователя будут иметь нулевые адреса электронной почты ... Так что функционально это может совпадать с требуемыми адресами электронной почты, но технически это не то же самое.
Элементы управления мастера предоставляют пользовательский интерфейс по умолчанию для сбора информации о членстве, и предполагается, что вы будете использовать поставщика SQL по умолчанию. Если вы не используете провайдера по умолчанию, ваш провайдер не поддерживает все поля или у вас есть другие уникальные ограничения в вашем провайдере, тогда вы должны настроить шаги мастера с помощью своих собственных шаблонов и обработать события мастера, чтобы обеспечить свои собственные проверки. и дополнительная логика в зависимости от обстоятельств.
Что касается понимания самой системы членства ...
Система членства в asp.net - это компромисс между строгим дизайном ОО и удобством. В базовом классе MembershipProvider есть несколько предположений, от которых наследуют конкретные поставщики членства, которые являются самонадеянными. Тот факт, что адреса электронной почты будут частью данных о членстве в одном из более либеральных допущений, которые делает базовый провайдер.
Делая это предположение, хотя это верно для большинства сред, система членства способна предоставить некоторые функции, связанные с адресами электронной почты, простым и интуитивно понятным способом (например, получить пользователя по его адресу электронной почты вместо имени пользователя и запрещение нескольких учетных записей с одним и тем же адресом электронной почты). Если базовый класс не делал этого предположения, то каждый раз, когда вы хотите что-то сделать с электронными письмами вашего конкретного провайдера, вам придется приводить ссылку на конкретный тип, который вы используете в своем приложении. Это громоздко.
С чисто ОО точки зрения эти предположения неудобны. Но вы можете, и многие поставщики членства предоставляют пустые реализации для методов и свойств из базового класса, если они их не используют.
Вы видите это больше с поставщиками ролей ... например, у поставщика ролей Windows Token есть много членов, которые выдают NotImplmentedException (поставщик ролей Token является поставщиком только для чтения для AD, поэтому все методы доступа набора свойств выбрасывают исключения).