Skip to content

Instantly share code, notes, and snippets.

@AEROGU
Last active January 10, 2020 04:41
Show Gist options
  • Save AEROGU/e6a06caf2276437823e4466c9d718612 to your computer and use it in GitHub Desktop.
Save AEROGU/e6a06caf2276437823e4466c9d718612 to your computer and use it in GitHub Desktop.
Ejemplo de uso de LINQ en base de datos

Ejemplo de uso de LINQ en base de datos

Debes haber agregado un elemento "ADO.NET Entity Data Model" (Hay una opción para mapear una base de datos existente)

Yo estoy utilizando una base de datos MySQL (la integración con Visual Studio instala con "MySQL for visual studio"), pero es lo mismo para cualquier DBMS que hayas integrado con visual studio.

En este ejemplo los objetos del modelo que creó la plantilla están en "aguapotableEntities"

using(aguapotableEntities db = new aguapotableEntities() ) {
	
	//Modo por objetos:
	//MessageBox.Show ( db.users.Where(usr=>usr.person_id==2 ).First().permissions.First().application, "Una prueba");
    
	// Usando LINQ
	var applicationQuery = 	from person in db.persons
				join permission in db.permissions
				on person.id equals permission.user_id
				where person.name.Contains("Arturo")
				select new { nombre=person.name, app=permission.application, permisos=permission.permissions1};

	string salida = "";

	try {
		foreach ( var result in applicationQuery ) {
			salida += result.nombre + " - " + result.app + " " + result.permisos + "\n";
		}
	} catch(System.Data.Entity.Core.EntityException ex ) {
		if (ex.HResult == -2146233087) //Este número de error da en MySQL, en otros DBMS hay que investigar
		{
			salida = "No se pudo conectar al origen de datos";
		} else
		{
			//salida = "Hubo un error, checar innerException para ver codigo y descripcion y manejarlo";
			throw;
		}
	}
	
	MessageBox.Show(salida, "Resultado");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment