Revision: 28110
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 1, 2010 00:15 by mmfusion
Initial Code
protected void fixProfile(aspnet_Profile p)
{
string[] okfields = { "names", "of", "profile", "properties",
"you", "want", "to", "keep"};
// search for: fieldname:S:startpos:length
string regex = @"([a-zA-Z0-9]+):S:([0-9]+):([0-9]+):";
string newNames = string.Empty;
string newValues = string.Empty;
int pos = 0;
System.Text.RegularExpressions.Regex rgx
= new System.Text.RegularExpressions.Regex(regex);
System.Text.RegularExpressions.Match match
= rgx.Match(p.PropertyNames, pos);
while ( match != null && match.Success ) {
string propertyName = match.Groups[1].Value;
if (okfields.Contains(propertyName))
{
// We want to keep this profile property. Extract the
// value and then append to newNames/newValues
int startPos = Convert.ToInt32(match.Groups[2].Value);
int len = Convert.ToInt32(match.Groups[3].Value);
string value = p.PropertyValuesString.Substring(startPos, len);
newNames += string.Format(
"{0}:S:{1}:{2}:",
propertyName,
newValues.Length,
len);
newValues += value;
}
pos = match.Index + match.Length;
match = rgx.Match(p.PropertyNames, pos);
}
p.PropertyNames = newNames;
p.PropertyValuesString = newValues;
}
protected void cleanMyData()
{
// db is your DataContext
foreach (var user in db.aspnet_Users)
{
aspnet_Profile p = user.aspnet_Profile;
if (p == null) continue;
fixProfile(p);
db.SubmitChanges();
}
}
Initial URL
Initial Description
I removed several properties from my custom Profile class, and wanted to clean out the data from the aspnet\_Profile table. This code will remove all unwanted data from the PropertyNames and PropertyValuesString columns of aspnet\_Profile. Note this assumes PropertyValuesBinary is not used, though it wouldn't be hard to support that too.
Initial Title
ASP.NET Membership Provider - Remove Unwanted Profile Properties
Initial Tags
Net, aspnet
Initial Language
C#