sábado, 1 de marzo de 2008

LinQ to Dataset


LinQ to Sql (Arquitectura de capas):

LinQ to Dataset, al igual que los otros temas de linq que hemos visto, nos permite realizar transacciones de busqueda y de actualización de registros de uno o más datatables de un dataset en específico. Como estamos buscando la información en concreto sobre datatables, también podemos realizar esta acción, sin tener de pormedio un Dataset.
Para realizar este ejercicio vamos a utilizar el ejemplo que venimos arrastrando desde LinQ to Object, LinQ to Xml, en el cual agregaremos un nuevo boton que llamaremos btnDS. Quedando la interfaz de la siguiente forma:


Ahora en el método que atiende el evento click del botón reutilizaremos la funcion que rescata el string del xml y lo reconstruiremos para luego cargarlo en un dataset, si lo desean pueden utilizar el xml que se ha definido en LinQ to Xml y realizar una llamada desde la variable xmlDocument con el metodo load, pero yo reutilizaré las funcionalidades de la misma interfaz, quedando el método de la siguiente forma:


private void btnDS_Click(object sender, EventArgs e)
{
try {
string sMsg = "";
string sXml = fnXmlObtener();
XmlDocument xml = new XmlDocument();
xml.LoadXml(sXml);
DataSet ds = new DataSet();
ds.ReadXml(new XmlNodeReader(xml.SelectSingleNode("Datos")));
var dato = from d in ds.Tables[0].AsEnumerable()
where (d.Field<string>("nombre").IndexOf(this.txtNombreBusqueda.Text) != -1)
select new
{
nombre = d.Field("nombre"),
appPrimero = d.Field("appPrimero"),
appSegundo = d.Field("appSegundo"),
fNacimiento = d.Field("fNacimiento")
};
foreach (var d in dato) {
sMsg += "Nombre: " + d.nombre + " " + d.appPrimero + " " + d.appSegundo + "\r\r" +
"Fecha de nacimiento " + d.fNacimiento + "\r\r";
}
MessageBox.Show(sMsg);
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}

Bueno amigos, que más decirles, espero que todo funcione bien y a probar.

No hay comentarios: