2009-11-02 8 views
8

Gibt es eine alternative Möglichkeit, alle Parameter implizit zu migrieren? Oder irgendwelche anderen Vorteile.Die beste Methode zum Migrieren eines anonymen Profils

Von MSDN:

public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args) 
{ 
    ProfileCommon anonymousProfile = Profile.GetProfile(args.AnonymousID); 

    Profile.ZipCode = anonymousProfile.ZipCode; 
    Profile.CityAndState = anonymousProfile.CityAndState; 
    Profile.StockSymbols = anonymousProfile.StockSymbols; 

    //////// 
    // Delete the anonymous profile. If the anonymous ID is not 
    // needed in the rest of the site, remove the anonymous cookie. 

    ProfileManager.DeleteProfile(args.AnonymousID); 
    AnonymousIdentificationModule.ClearAnonymousIdentifier(); 

    // Delete the user row that was created for the anonymous user. 
    Membership.DeleteUser(args.AnonymousID, true); 

} 

Oder ist dies der beste/einzige Weg?

Antwort

8

Dies ist der Weg zu gehen. Aber ich würde eine Verallgemeinerung vorschlagen. Anstatt jede Eigenschaft hart zu codieren, könnten Sie die ProfileBase.Properties Sammlung durchlaufen. Etwas in diese Richtung:

var anonymousProfile = Profile.GetProfile(args.AnonymousID); 
foreach(var property in anonymousProfile.PropertyValues) 
{ 
    Profile.SetPropertyValue(property.Name, property.PropertyValue); 
} 

Da Eigenschaftsgruppen als Teil der Eigenschaftsnamen dargestellt werden (zum Beispiel „Settings.Theme“ steht für die Theme-Eigenschaft innerhalb der Gruppe Einstellungen) der obige Code auch mit Eigenschaftsgruppen funktionieren soll.

+0

Würde dies auch Gruppen von Eigenschaften übernehmen? –