Testa med Profile i listan...
Hej.
Jag testar Membership databasen("aspnetdb.mdf") i ASP.NET2.0.
Jag tänkte adda lite tabeller i den autogenererade databasen.
I en av de autogenerade tabellen "aspnet_Users" är UserID primärnyckel av datatyp GUID.
Allt bra så långt. Jag ska nu lägga till en tabell i denna databas kallad "orders".
Och i "orders" tabellen lägger jag såklart till en kolumn kallad "UserID" som är en foreign key till
"aspnet_Users" tabellens primärnyckel("UserID"). Helt korrekt 3:e forms normalisering.
Allt gött so far. Men det är nu man stöter på problem. När man senare ska använda
denna "UserID" i sin applikation finns det väldigt dåligt stöd för detta.
Ponera nu att jag loggar in med loginkontrollerna och jag är inloggad.
Och jag vill visa alla mina ordrar. Då använder jag såklart mitt "UserID" för att
göra en SELECT WHERE clause på "orders" tabellen.
Så jag drar då ut en SqlDataSource för att göra detta och kopplar den till "orders" tabellen
och trycker sedan på "WHERE" för att selektera enligt mitt "UserID".
Då finns det bara stöd för:
None
Control
Cookie
Form
Profile
QueryString
Session
MEN INGET FÖR DEN INLOGGADES USERID!!!!.
Enda sättet att komma åt den inloggades(eller den anonomous) "UserID"
är att använda "Membership.GetUser().ProviderUserKey" i källkoden.
Men det finns inget stöd i vare sig SqlDataSource eller ObjectDataSource
för att komma åt "UserID". Varför har dom gjort på detta sättet?.
Och vad som gör det värre är också att man behöver inte ens
vara inloggad för att ett "UserID" ska skapas i "aspnet_Users" tabellen
eftersom den tillåter att anonomous users kan spara sina "Profiles".
Så därför blir att komma åt "UserID" ännu viktigare.
Är man inloggad så ska man identifiera sig med sitt "UserID" eftersom det
är primärnyckeln när usern skapades i tabellen "aspnet_Users". Och det är ju denna "UserID" man använder
när man ska lägga till ordrar och grejer i foreign key tabeller.
Jag kan inte fatta hur dom tänkt egentligen?. Nån som har en fet lösning i bakfickan?