Professional Documents
Culture Documents
Objetos empresariales
Hasta ahora las aplicaciones han sido creadas de dos niveles. (interfaz de usuario y datos finales).
Para aplicaciones comerciales es recomendable utilizar n-niveles en donde exista una capa de lógica empresarial
central con el objeto de separar la recuperación de datos de la base de datos, de la manipulación (y validación) de
dichos datos antes de su presentación.
Un ejemplo de objeto empresarial de nivel medio sería crear una clase sin estado para encapsular lógica empresarial y
una clase modelo que pueda cargar y almacenar datos de la base de datos.
Lo más importante de esta declaración es que hemos asignado a DataSourceID el valor ObjectDataSource1. debemos
declarar entonces este objeto y así en el código HTML
<asp:ObjectDataSource ID=”ObjectDataSource1” runat=”server” SelectMethod=”GetAllCustomers”
TypeName=”CustomerBusinessLogic” />
el atributo SelectMethod indica a ObjectDataSource qué método debe invocar en su objeto empresarial para
responder a la petición de selección del DataGrid (para rellenar la rejilla) y el atributo TypeName indica al
ObjectDataSource qué clase tendrá ese método.
Vemos que la clase de lógica empresarial sin estado se llamará CustomerBusinessLogic y tendrán un método estático
llamado GetAllCustomers.
Para crear esta clase hacemos clic con botón derecho del ratón en el proyecto en el Explorador de Soluciones y
agregamos una nueva clase llamada CustomerBusinessLogic.cs. (colocamos el archivo en el directorio App_Code).
La clase Business Logic está declarada para ser estática porque todos sus miembros serán estáticos. Los métodos
miembros representan las posibilidades de la clase de lógica empresarial:
GetAllCustomers: responde al método seleccionado
UpdateCustomerInformation: Responde al método Update
GetCustomer: obtiene una instancias de cliente individual tras recibir un CustomerID
Try {
//seleccion sin argumentos
IEnumerable CustomersIDs= dataSource.Select (DataSourceSelectArguments.Empty);
Ienumerator enumerator = CustomerIDs.GetEnumerator ();
Igual para contactTitle – address – city – region – postalCods – country – phone – fax –
este código extrae información sobre un determinado cliente (basándonos en CustomerID) de la base de datos y crea
datos de instancia a partir de esos datos vinculados ala base de datos. Comienza creando una instrucción de la
selección con parámetros (@CustomerID) que extrae los campos necesarios para crear el objeto
empresarial...utilizamos un constructor...stringBuilder
el código crea un objeto de conexión y de comando como siempre y añade el parámetro con customerID como
valor... param....
en el bloque try se abre la conexión y se invoca a un DataReader basado en la instrucción de selección con
parámetros...dataReader=command.ExecuteReader()
si recibimos datos de vuelta (si no es así, se produce una excepción) rellenaremos los campos del objeto empresarial a
partir de las columnas del dataReader...this.companyName=dataReader [“companyName”].toString();
tras cerrar el dataReader y la conexión, el objeto se instancia completamente y puede usarse para vincular datos en el
GridView.
En nuestro caso, se mostrarán los datos de la base de datos que tiene la misma estructura que los campos del objeto
empresarial, pero en una aplicación real, el objeto empresarial del cliente podría ser más grande, más pequeño o más
complejo que los datos almacenos en una sola tabla de base de datos.
Cuando se ejecuta la aplicación el GridView está vinculado al ObjectDataSource, al igual que antes utilizábamos
GridView vinculados a SqlDataSource, y los datos se muestran correctamente basándonos en las columnas
vinculados que escogimos anteriormente.