Я использую идентификатор ASP.NET с новым веб-сайтом и, кажется, не так много (каких-либо?) примеров того, как это сделать развязанным образом. Я не хочу, чтобы мой класс домена DomainUser
должен был наследовать от Microsoft.AspNet.Identity.EntityFramework.User
, поэтому я создал класс, который выглядит следующим образом:
public class IdentityUser : User
{
public virtual DomainUser DomainUser { get; private set; }
}
Я переместил DbSet
, требуемый идентификатором ASP.NET, в тот же производный класс DbContext
, что и мои модели домена как показано в этом ответе. Я связал IdentityUser
однонаправленно с DomainUser
с помощью Fluent API, например:
modelBuilder.Entity<IdentityUser>().HasRequired(iu => iu.DomainUser).WithRequiredPrincipal();
Это позволяет мне в основном отделить проблемы авторизации и аутентификации от поведения, определенного в классе DomainUser
. Это лучше, чем объединение их в один класс, но это все еще кажется уродливым. У меня все еще есть ссылки на необходимые сборки ASP.NET Identity в моем проекте Domain. Я мог бы создать еще один проект, в котором содержался только мой класс IdentityUser и ссылка на мою сборку домена, чтобы разрешить свойство навигации, но это начинает чувствовать себя запутанным.
Я чувствую, что должен быть лучший, более чистый, более модульный способ связать Identity с доменом, не приводя к плотной связи.
Кто-нибудь придумал лучший способ справиться с этим? Я надеюсь привлечь внимание тех, кто участвует в проекте ASP.NET Identity (Hao Kung и др.), Чтобы обеспечить здесь направление.