Exponer el adaptador de un Dataset en .NET

¿ Porque hicieron tan cerrados los Dataset en .Net ?… no lo sé. Tal vez alguien pueda explicármelo.
El asunto es que si queremos acceder al SqlDataAdapter incluido en el TableAdapter desde nuestro código, nos es imposible porque éste es privado.
Entonces, si por ejemplo, quisiéramos usar transacciones en nuestro SQLCommand, no encontraríamos la manera de llegar a ellas.

Pero no desesperéis … hay solución.

Conozco dos maneras:
1. La reflexión (método poco elegante y algo lento).
2. La extensión del TableAdapter.

A mi me gusta la segunda opción por ser orientada a objetos y mas eficiente.

Parece que .NET crea una clase para cada TableAdapter que definimos en el diseñador de Dataset, con el nombre “NombreDeTablaTableAdapter”. Por suerte la define como Partial Public Class, lo que nos permite extenderla. Todo esto lo hace en el espacio de nombres llamado “NombreDeDatasetTableAdapters”
Sabiendo esto y suponiendo que nuestro Dataset se llama NorthWind y la tabla Employees, podemos hacer lo siguiente:

Imports System.Data.SqlClient

Namespace NorthWindTableAdapters
  Partial Public Class EmployeesTableAdapter
    Public Function GetAdapter() As SqlDataAdapter
      Return Me.Adapter
    End Function
    Public Function GetCommandCollection() As SqlCommand()
      Me.InitCommandCollection()
      Return Me.CommandCollection
    End Function
  End Class
End Namespace

Aquí agregamos dos funciones a nuestro EmployeesTableAdapter.
GetAdapter: nos da acceso al adaptador haciéndolo publico y accesible desde cualquier clase que lo implemente.
GetCommandCollection: nos devuelve tantos SqlCommand como métodos fill hayamos definido en nuestro EmployeesTableAdapter y en el orden que los hayamos definido. Sin embargo es necesario correr el método InitCommandCollection() para que esta lista quede generada y configurada.

Así queda expuesta la maquinaria interna de los TableAdpater generados por el diseñador de Dataset. Está en nosotros utilizarla como mas nos convenga.

Anuncios

Una respuesta a “Exponer el adaptador de un Dataset en .NET

  1. Pingback: Pequeña aplicación ASP.Net, con datos en SQL sin uso de Postback. | MoniMisi

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s