Obecnie tworzę nowy projekt ASP.NET MVC 5, który chcę wydać około września. Muszę wybrać system przynależności, ale obecnie nie mam pojęcia, w którym kierunku powinienem iść. Obecna SimpleMembership działa dobrze, ale najwyraźniej będzie niezgodna z nadchodzącą tożsamością ASP.NET. Z drugiej strony tożsamość ASP.NET jest absolutnie nowa przy zerowej dokumentacji i może się zmienić w dowolnym momencie. Wreszcie wydaje się, że używane są tu identyfikatory oparte na łańcuchach, co wydaje się bardzo niepotrzebnym narzutem w porównaniu do identyfikatorów opartych na liczbach całkowitych, które obsługuje SimpleMembership. Czy istnieje dobry, przyszłościowy sposób, który mogę wybrać?ASP.NET Identity
Odpowiedz
Odradzam również używanie SimpleMembership. Można nadal używać int identyfikatorów w bazie danych, to po prostu trzeba toString() identyfikatora podczas podłączania w swojej jednostce bazy danych, czyli:
public class MyUser : IUser {
[Key]
int UserID { get; set; }
string IUser.Id { get { return UserId.ToString(); } }
}
Moim zdaniem, jeśli rozpoczynasz projekt od asp.net mvc 5, powinieneś użyć nowego systemu członkostwa, ponieważ jest on dobrze zintegrowany ze standardami http://owin.org/.
Dodatkowo dodajemy więcej samouczków, a na SO istnieje mnóstwo wsparcia. – RickAndMSFT
chciałbym użyć najnowszej wersji tożsamości lub zbudować swój własny rachunek system całkowicie. ASP.NET Identity teraz używa identyfikatora GUID (NVARCHAR (128) - w db) dla identyfikatora, jednak nadal możesz użyć int, jeśli chcesz. Wiem, że ludzie wciąż używają tożsamości 1.0 bez problemów, wierzę, że wtedy używali int dla Id.
Tak czy inaczej, Id nie powinien nigdy kolidować, czy jest to int czy guid. jak powyższy post powiedział, że możesz po prostu Id.ToString();
Niezależnie od wybranej trasy, nie sądzę, że będzie to miało duże znaczenie.
Wierzę, że ASP.NET jest całkiem dobrym szkieletem i zapewnia prawie wszystkie wymagane funkcje dla aplikacji. Zapewnia to również możliwość wyboru typu kolumny Id zgodnie z własnym wyborem. Stworzyłem podstawowe opakowanie na ASP.NET i opublikowałem nuget, aby był łatwy w użyciu. Możesz spojrzeć na kod pod adresem github
String guziki sformatowane są używane w miejsce rzeczywistych guids, aby umożliwić wymianę mechanizmu trwałości, powiedzmy, jeśli chcesz użyć rozwiązania nosql, które nie oferują wsparcia dla guids. Kolumna id jest indeksowana i chociaż indeksowana kolumna int działa lepiej, różnica jest znikoma dla większości aplikacji. – joelmdev
Zobacz stronę http://stackoverflow.com/questions/19238621/why-do-the-asp-net-identity-interfaces-use-strings-for-primary-and-foreign-keys/19283502#19283502 z powodu GUID-ów używany. – RickAndMSFT