asp.netPRO




Subscription Services
Print Subscription
Online-Only Subscription
Renew Subscription
asp.netNOW Newsletter
Change of Address
Pay An Invoice
Subscription Packages

asp.netPRO
Articles
Podcasts
411asp.net Directory
New Products
Book Reviews
Blog Listings  
Awards- NEW
Crossword Answers- NEW
E-Newsletter Articles- NEW
Webcasts - NEW 
e-Learning - NEW 
Job Listings  
Product Reviews
Opinion
Back Issues
Reprints/E-prints



Contact Information
Contact Us
Advertise with Us
Write For Us




 
 
 











Co-Sponsored by:
Download your free trial now!


Latest Features

 •

Columns & Rows: Part II


 •

Model: The “M” in ASP.NET MVC


 •

Patterns & Practices


 •

XAML Marks the Spot


 •

Columns & Rows: Part I



Article Rating



Tell a friend
about this article!




asp:Feature

LANGUAGES: C#

ASP.NET VERSIONS: 2.0

 

Passing Data through Layers

Design and Implement a Custom Business Entity Class

 

 

Many times we pass data through the layers in an application using a DataSet object without taking advantage of some of the other features that this class offers (beyond simply being a data container). In this article I’ll demonstrate an alternative to this technique by designing a Custom Business Entity class.

 

To get started, let’s design an interface named IBusinessEntity. An abstract class named BusinessEntity would implement this interface. Why abstract? Because we need not instantiate the BusinessEntity class. Rather, we would sub-class the same based on the type of the BusinessEntity we require and instantiate it to facilitate reusability.

 

Use the following code for the IBusinessEntity interface:

 

using System;

 

namespace Definitions

{

     public interface IBusinessEntity

     {

           object ID

           {

                 get;

                 set;

           }

     }

}

 

The abstract class BusinessEntityBase implements the interface IBusinessEntity and contains one property named ID, which in turn is of type object. This is because we require a primary key for our Custom Business Entity, the type of which can be determined at run time. The code for BusinessEntityBase is shown in Figure 1.

 

using System;

using System.Collections;

using Definitions;

 

namespace BusinessEntity

{

     public abstract class BusinessEntityBase :

     IBusinessEntity

     {

           private object id;

 

           public object ID

           {

                 get

                 {

                       return this.id;

                 }

 

                 set

                 {

                        this.id = value;

                 }

           }     

      }

 }

Figure 1: Code for the abstract class BusinessEntityBase.

 

The code in Figure 2 shows how we can make use of the concepts learned so far to design a Custom Business Collection Base class. This would be required to bind data to the controls in our application, such as the DataGrid, DataView, etc. The code for the Custom Business Entity class named Customer is shown in Figure 3.

 

public abstract class BusinessEntityCollectionBase :

CollectionBase

 {

      public BusinessEntityCollectionBase()

      {

       

      }

 

       public void CopyTo(IBusinessEntity[]

       iBusinessEntity,int index)

       {

             List.CopyTo(iBusinessEntity,index);

       }

 

       public bool Contains(IBusinessEntity

       iBusinessEntity)

       {

             return List.Contains(iBusinessEntity);

       }

 

       public int IndexOf(IBusinessEntity

       iBusinessEntity)

       {

             return List.IndexOf(iBusinessEntity);

        }

 

       public new int Count

       {

             get

             {

                   return base.Count;

             }

       }

 

       public int Add(IBusinessEntity

       iBusinessEntity)

       {

             return List.Add(iBusinessEntity);

       }

 

       public override string ToString()

       {

             return base.ToString ();

       }

 

       public void Remove(IBusinessEntity

       iBusinessEntity)

       {

             List.Remove(iBusinessEntity);

       }

 }

Figure 2: Code for the abstract class BusinessEntityCollectionBase.

 

using System;

using BusinessEntity;

using Definitions;

 

public class Customer : BusinessEntityBase

{

     private string name;

     private string address;

      

     public string Name

     {

           get

           {

                 return this.name;

           }

 

           set

           {

                 this.name = value;

           }

     }

 

     public string Address

     {

           get

           {

                 return this.address;

           }

 

           set

           {

                 this.address = value;

           }

     }

}

Figure 3: Code for the Customer class.

 

Similar to the code in Figure 3 is the CustomerCollection class, which inherits the BusinessEntityCollectionBase class (see Figure 4).

 

public class CustomerCollection :

 BusinessEntityCollectionBase

{

     public Customer this[int index]

     {

           get

           {

                 return (Customer)base.InnerList[index];

           }

           set

           {

                 base.InnerList[index] = value;

           }

     }

}

Figure 4: The CustomerCollection class inherits the BusinessEntityCollectionBase class.

 

The following code snippet shows how we can make use of the Custom Business Entity class designed earlier:

 

Customer customer = new Customer();

customer.ID = 1;

customer.Name = "Joydip Kanjilal";

customer.Address = "Hyderabad,India";

 

We can now pass this object across the layers in our application. If used in lieu of a DataSet, this object would save a lot of memory resources.

 

This article has discussed implementation of a Custom Business Entity class and a Custom Business Entity Collection class that we can use in our applications. Use of the Custom Business Entity class in lieu of the traditional way of passing an instance of the DataSet class can boost the performance of our application, as it would consume much less memory resources compared to the use of a DataSet instance.

 

Working extensively in Microsoft technologies for more than 10 years, Joydip Kanjilal is a Senior Project Leader for a company in a Hyderabad, India. His programming skills include C, C++, Java, C#, VB, VC++, ASP.NET, XML, and UML. He has worked with .NET and C# for more than five years. Reach Joydip at mailto:joydipkanjilal@yahoo.com.

 

 

 

 

Top of page


Penton Media

© 2009 Penton Media, Inc Terms of Use Privacy Statement