An Extended Look at the Profile Object - Part 2
page 3 of 4
by Bilal Haidar
Feedback
Average Rating: 
Views (Total / Last 10 Days): 27433/ 35

Inheriting a Profile

In a previous section we discussed one of the ways to use our custom object in the Profile object. In this final section of the article, we will show you how to create a custom object that inherits from the Profile base class which is ProfileBase class, then configure the Profile configuration section in the application’s configuration file (web.config) to inherit from that class.

As we know, at run time an instance of the ProfileCommon class, which inherits from the ProfileBase class, is dynamically created. Using the inherits property allows the automatically generated ProfileCommon class to be created by inheriting from a class specified within its value and not from the ProfileBase base class; this can be found in the System.Web.Profile namespace.

Listing 8 shows the code for the StudentRecordInherit class that inherits from the ProfileBase base class.

Listing 8. StudentRecordInherit Inheriting from ProfileBase

using System;
using System.Web.Profile;
public class StudentRecordInherit : ProfileBase
{
#region Private Fields
private int _StudentId;
private string _Fname;
private string _Lname;
#endregion
#region Property Section
public int StudentId
{
get { return _StudentId; }
set { _StudentId = value; }
}
public string FirstName
{
get { return _Fname; }
set { _Fname = value; }
}
public string LastName
{
get { return _Lname; }
set { _Lname = value; }
}
#endregion
}

Listing 9 presents the Profile configuration section. There is no need to add any property; only the inherits property should be assigned to a custom class inheriting from ProfileBase base class.

Listing 9. Profile configuration section using Inherits

<anonymousIdentification enabled="true"/>
<Profile enabled="true" inherits="StudentRecord" /> 

Listing 10 demonstrates the use of the Profile object when inheriting from a custom class. When using the inherits property, all the properties of the custom class would be properties of the Profile object, since the ProfileCommon is auto-generated from that custom class.

Figure 4. Testing Inherits Property

Listing 10. Testing Inherits Property

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Profile;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class TestInherits : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Profile.StudentId = 1;
Profile.FirstName = "Bilal";
Profile.LastName = "Haidar";
Response.Write("Student Id &nbsp;: " + Profile.StudentId + "<br />");
Response.Write("First Name : " + Profile.FirstName + "<br />");
Response.Write("Last Name : " + Profile.LastName + "<br />");
}
} 

We have seen two ways in which we can use our custom objects as part of the Profile object. Logically speaking, it would be better to go with the second option, in which we create our custom object inheriting from the ProfileBase class. This would give us full control over the properties which are part of the ProfileCommon instance created at run time.


View Entire Article

User Comments

Title: Property IsDirty when inheriting ProfileBase (2nd option)   
Name: AiM
Date: 2006-07-20 11:33:35 AM
Comment:
I tried both versions, when I set the configuration in the config file it works ok, but when I implement the class that inherits from ProfileBase the changes aren't saved. I overrided the Save method just to check for the value of the IsDirty property, and it is false.
How this should work, are there other details for the inherited option I don't know?
Title: Re:   
Name: Bilal Haidar [MVP]
Date: 2005-12-01 5:21:55 AM
Comment:
Hello:
You should wait for Part3 of this series to know everything about the database and etc...

Regards
Title: Where is Database ?   
Name: Zeeshan Ali
Date: 2005-12-01 5:17:02 AM
Comment:
You didn't specify the database to which the profile will persist. Where the Peofile data is being persist ?? Cookies ? or What ?
Title: Win app   
Name: Anders H
Date: 2005-11-30 4:44:45 PM
Comment:
If you want to use this example, in a web app,you add data and work with it in a webb app, then you want to get this data in a windows service app for example mailing things based on the items in this profile data, then you need to get to this data from a win app, how do you do that???
Title: Re:   
Name: Bilal Haidar [MVP]
Date: 2005-11-30 1:29:12 AM
Comment:
Well, the Profile object has its own HttpModule events. The way it works is as follows:
At runtime, the configuration section of the profile object in the Web.config will be tranformed into a strongly typed object which is then added to the HttpContext.
At the beginning of the request, the profile data are loaded from database, then at the end of the request, if the data is dirty (has been changed) it will be saved back. Saving data at every request is a matter of a Flag you can configure.
Hope that answers you well.

Regards
Title: One of the more useful articles I've seen in a long time!   
Name: Colin
Date: 2005-11-29 6:12:03 PM
Comment:
I just learned how to create a custom Role- and Membership- Provider and I saw no mention of this class anywhere! I wish I'd known because I spent a long time digging for something like this, and ended up coming up with a custom implementation using an HttpModule and Session.

Have you discovered in your study of the class what the default persistance mechanism is the profile? Is it stored in the user's context or persisited, like forms authentication info, in a secured cookie or something?
Title: Re:   
Name: Bilal Haidar [MVP]
Date: 2005-11-29 1:51:35 AM
Comment:
Hi to all:
Profile object can be thought of as advanced session object. In windows applications, no need for that concept, so it is ot available there.
Thanks for the comments.

Regards
Title: good article   
Name: DotNETKans
Date: 2005-11-29 12:21:16 AM
Comment:
hi Bilal,

Good article mate. Keep it up.
Title: From a win32 app   
Name: Anders H
Date: 2005-11-28 12:39:01 PM
Comment:
How can i access this from an win32 application, it complain on profile object others than ordinary type eg. string, int etc....??

Product Spotlight
Product Spotlight 





Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-03-29 10:29:40 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search