Всякий раз, когда я разрабатываю приложение, которое выходит за рамки того, что предлагает поставщик членства .NET, я создаю свои собственные таблицы в базе данных приложения для пользователей, профилей пользователей и ролей.Это даст вам гибкость в разработке информации, которую вы хотите сохранить для пользователей, и тогда вы сможете использовать EF для доступа к этой информации.Какой подход EF вы используете;это сначала код, модель или база данных?Если вы используете код вначале, EF создаст для вас отношения, создав идентификаторы объектов типа int в БД, для которых задано значение «Is Identity» и само приращение.Вы можете переопределить это, используя атрибуты в свойствах ваших объектов, например так:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID { get; set; }
Использование int обеспечивает более эффективную индексацию, но Guid полезны, если вы используете реплицированные или распределенные базы данных.Вы можете использовать любую опцию для поддержания отношений между объектами, если вы используете подходы сначала модель, либо база данных.Используя концепцию идентификаторов объектов вместо использования других первичных ключей, дайте пользователю возможность изменять информацию пользователя, не портя отношения таблиц.Например, если первичным ключом для пользовательской таблицы является имя пользователя, и пользователь решает изменить свое имя пользователя, вам также потребуется обновить все внешние ключи.
Перемещая информацию о членстве в свое приложение, вы получите гораздо больше гибкости в определении информации о членстве и взаимосвязи между другими объектами приложения, что, в свою очередь, позволит вам выполнять запросы, которые вы ищете.