Korzystam z MVC5. W standardzie jest tam ASP.NET Identity w Code First jako membership provider. Baza do projektu, który tworzę jest już gotowa i nie posiada implementacji membershipa. Powiedzcie mi jak zintegrować ASP.NET Identity z docelową bazą danych? Myślę nad tym od dwóch dni bez efektów.
Dziedziczysz po odpowiednim kontekscie i dodajesz tam swoje DbSet
. Dzedziczysz po ApplicationUser
i dodajesz wlasciwosci dla uzytkownika...
Anyway. Najpierw pomysl, czy w ogole jest sens uzywania ASP.NET Identity, i czy naprawde potrzebujesz tak skomplikowanej zabawki.
Niestety musi być to ASP.NET Identity. Możesz podać więcej szczegółów? Nie trzeba dodawać membershipa "ręcznie" do docelowej bazy?
Okey. Źle się wyraziłem. Gdzie znajdę DbSet tabelek ASP.NET Identity?
W kontekscie bazowym (IdentityDbContext<>
) sa dwa DbSet
:
public virtual IDbSet<TUser> Users { get; set; }
public virtual IDbSet<TRole> Roles { get; set; }
gdzie TUser
i TRole
to parametry generyczne, TUser
musi dziedziczyc po IdentityUser<>
, a TRole
po IdentityRole<>
IdentityUser<>
zawiera 3 kolekcje:
public virtual ICollection<TRole> Roles { get; private set; }
public virtual ICollection<TClaim> Claims { get; private set; }
public virtual ICollection<TLogin> Logins { get; private set; }
gdzie typy to:
where TLogin : IdentityUserLogin<TKey> where TRole : IdentityUserRole<TKey> where TClaim : IdentityUserClaim<TKey>
IdentityRole<>
zawiera jedna kolekcje.
public virtual ICollection<TUserRole> Users { get; private set; }
where TUserRole : IdentityUserRole<TKey>
I dzieki konwencjom + drobnej konfiguracji generuje sie te kilka tabelek, ktorych AspNetIdentity uzywa.
PS. Zainwestuj w dotPeek.
Możesz mi podać krok po kroku wymagane zmiany? Wystarczy tylko coś w stylu: "w IdentityModels.cs zmień na docelowy ConnectionString".
-.-' o to ci chodzi, zeby po prostu do wlasnej bazy ci te tabelki wrzucilo?
W takim razie w web.config
dodaj connection string do twojej bazy, a potem przekaz nazwe tego stringa jako argument klasy bazowej dla kontekstu.
http://msdn.microsoft.com/pl-pl/data/jj592674.aspx
Czyli moja baza docelowa nie musi posiadać tych tabel? On przy pierwszej inicjacji je do niej doda?
Mam wrazenie, ze mowimy w innych jezykach...
Mój problem jest na pewno bardzo prosty. Proszę nie irytuj się. Zawsze tworzyłem w MVC4 + simplemembership. Otwierałem nowy projekt, dodawałem do niego bazę, pisząc ją w Code First. Potem do nowo utworzonego kontekstu wrzucałem DbSet<UserProfile>, oraz w kontrolerze zmieniałem ze starego kontekstu na nowy.
Mój problem polega na tym, że nie mogę zrobić tego samego w MVC5 + ASP.NET Identity.
Obejrzałem. Niestety dalej nie wychodzi.
The entity type ApplicationUser is not part of the model for the current context.
Szczerze mówiąc, to mi też rozwiązanie z MVC4 bardziej odpowiadało. Czy teraz w jakiś ludzki / prosty sposób da się zaprojektować całą bazę i mieć ją jedną? Dla mnie jest kłopotem trzymanie tego w dwóch bazach.
Chciałbym po prostu jedną tabelkę z rolami, drugą (własną) z użytkownikami, która z kolei ma relacje z innymi i nie potrafię tego zrobić - po części przez brak mojego doświadczenia, a po części dlatego, że teraz mam użytkowników w drugiej bazie (domyślnie). Nie potrafię znaleźć nic sensownego, gdzie jest opisane jak sobie z tym poradzić.
Znalazłem podobny temat na tm forum, ale żadnej odpowiedzi rozwiązującej problem.