6- linq to mysql tutorial

13
LINQ to MySQL Tutorial Este tutorial te guiará a través del proceso de creación de una aplicación sencilla impulsado por la LinqConnecttecnología. En menos de 5 minutos tendrás una capa de acceso rápido de usar los datos para sus objetos de negocio. En este tutorial: Presentación de la LinqConnect (LINQ to MySQL) Tecnología Requerimientos Preparación del Proyecto Generación de Modelo de Base de Datos Consulta de Datos Inserción de nuevos datos Actualización de datos Eliminación de datos Información Adicional Presentación de la LinqConnect (LINQ to MySQL) Tecnología LinqConnect (antes conocido como LINQ to MySQL) es una solución ORM rápido y ligero, que es de cerca compatible con Microsoft LINQ to SQL y contiene sus propias características avanzadas, como el apoyo de tipo complejo, los datos avanzados ir a buscar opciones, puede configurar el almacenamiento en caché de consulta compilado, y otros. LINQ significa Language-Integrated Query, lo que significa que la recuperación de datos ya no es una lengua separada. El motor de LINQ permite que las aplicaciones .NET para conectarse a bases de datos sin preocuparse mucho acerca de columnas y filas. Los datos que usted recibe se forma automáticamente como objetos listos para su uso por la lógica empresarial. LINQ to relacional de datos puede ser pensado como una herramienta de mapeo objeto-relacional (ORM). Las consultas LINQ de tipo seguro consiguen compilados en MSIL sobre la marcha, y las cláusulas de consulta se traducen en SQL y se envían al servidor MySQL para su ejecución. Esto hace que su capa de acceso de datos más seguro, más rápido y mucho más conveniente para diseñar. Requerimientos Para conectar con el servidor MySQL, es necesario que el servidor propio funcionamiento, dotConnect para MySQL instalado y en ejecución IDE. LinqConnect requiere .NET Framework 3.5, Visual Studio 2008, y MySQL Server 5.0 o

Upload: miguel-angel-martinez-gonzalez

Post on 07-Dec-2015

38 views

Category:

Documents


8 download

DESCRIPTION

Tutorial de Linq para Msql

TRANSCRIPT

Page 1: 6- LINQ to MySQL Tutorial

LINQ to MySQL Tutorial Este tutorial te guiará a través del proceso de creación de una aplicación sencilla impulsado por la LinqConnecttecnología. En menos de 5 minutos tendrás una capa de acceso rápido de usar los datos para sus objetos de negocio. En este tutorial:

Presentación de la LinqConnect (LINQ to MySQL) Tecnología

Requerimientos

Preparación del Proyecto

Generación de Modelo de Base de Datos

Consulta de Datos

Inserción de nuevos datos

Actualización de datos

Eliminación de datos

Información Adicional

Presentación de la LinqConnect (LINQ to MySQL) Tecnología LinqConnect (antes conocido como LINQ to MySQL) es una solución ORM rápido y ligero, que es de cerca compatible con Microsoft LINQ to SQL y contiene sus propias características avanzadas, como el apoyo de tipo complejo, los datos avanzados ir a buscar opciones, puede configurar el almacenamiento en caché de consulta compilado, y otros.

LINQ significa Language-Integrated Query, lo que significa que la recuperación de datos ya no es una lengua separada. El motor de LINQ permite que las aplicaciones .NET para conectarse a bases de datos sin preocuparse mucho acerca de columnas y filas. Los datos que usted recibe se forma automáticamente como objetos listos para su uso por la lógica empresarial.

LINQ to relacional de datos puede ser pensado como una herramienta de mapeo objeto-relacional (ORM). Las consultas LINQ de tipo seguro consiguen compilados en MSIL sobre la marcha, y las cláusulas de consulta se traducen en SQL y se envían al servidor MySQL para su ejecución. Esto hace que su capa de acceso de datos más seguro, más rápido y mucho más conveniente para diseñar.

Requerimientos Para conectar con el servidor MySQL, es necesario que el servidor propio funcionamiento, dotConnect para MySQL instalado y en ejecución IDE. LinqConnect requiere .NET Framework 3.5, Visual Studio 2008, y MySQL Server 5.0 o

Page 2: 6- LINQ to MySQL Tutorial

superior. Tenga en cuenta que la característica LinqConnect sólo está disponible en las ediciones profesionales y de desarrollo de dotConnect para MySQL.

En este tutorial se supone que usted ya tiene los objetos de bases de datos creadas. Usted tiene que ejecutar un script desde el siguiente archivo instalado por defecto en \ Archivos de programa \ Devart \ dotConnect \ MySQL \ Samples \

crm_demo.sql

Preparación del Proyecto Crear una nueva aplicación de consola en Visual Studio. Podría pertenecer así cualquier otro proyecto, pero por simplicidad vamos a utilizar proyecto de consola en todo el tutorial. El resto del tutorial asume que el nombre del proyecto es ConsoleApplication1 . Si proyecta se llama de otra manera, tendrá que sustituir este nombre con el actual en el Explorador de soluciones.

Generación de Modelo de Base de Datos 1. Añadir Devart LinqConnect Modelo al proyecto. Para ello, haga clic en el nodo del proyecto en el

Explorador de soluciones, seleccione Agregar , haga clic en Nuevo elemento ... . En el Agregar nuevo

elemento cuadro de diálogo, seleccione el Data categoría, seleccione la Devart LinqConnect

Modelo de plantilla y haga clic en Añadir . Esto inicia automáticamente el asistente Crear nuevo

modelo, que crea un nuevo modelo de vacío o genera a partir de la base de datos.

2. Haga clic en Siguiente en la pantalla de bienvenida.

3. Rellena los ajustes de conexión y haga clic en Siguiente .

Page 3: 6- LINQ to MySQL Tutorial

4. Selección de objetos de base de datos que se utilizarán en el modelo. Estos son todos los objetos de la

secuencia de comandos crm_demo, incluyendo mesas auxiliares. Haga clic en Siguiente .

Page 4: 6- LINQ to MySQL Tutorial

5. En la siguiente pantalla, puede ajustar las reglas de nomenclatura para las entidades y de sus

miembros. Para la base de datos CRM demo no se requieren reglas, por lo que basta con hacer clic en

Siguiente .

Page 5: 6- LINQ to MySQL Tutorial

6. Entrada CrmDemoContext como espacio de nombres, y CrmDemoDataContext como el nombre de

DataContext descendiente. Este será el nombre de la clase principal de acceso a datos. Haga clic

en Siguiente .

Page 6: 6- LINQ to MySQL Tutorial

7. Haga clic en Finalizar . El modelo se genera y se abrió en la Entidad desarrollador.

8. En el menú principal, haga clic en Archivo | Guardar . Esto actualiza la

generada CrmDemoDataContext código de modelo en Visual Studio.

El modelo que solo ha generado está listo para usar.

Page 7: 6- LINQ to MySQL Tutorial

Entidad desarrollador crea clases para todas las tablas seleccionadas que representan entidades. También crea un descendiente de la Devart.Data.Linq.DataContext clase, que controla la conexión a la base de datos, y todo el flujo de datos. Esta categoría comprende las propiedades y métodos con nombres de objetos de base de datos.Que va a utilizar estos miembros para recuperar y modificar datos en el contexto. El código generado se encuentra en los DataContext1.Designer.cs archivo (DataContext1.Designer.vb). Usted puede escribir sus propias clases y métodos parciales para ello en los DataContext1.cs archivo (DataContext1.vb).

Page 8: 6- LINQ to MySQL Tutorial

Consulta de Datos Todo LINQ a las operaciones de MySQL se ejecutan a través del descendiente DataContext, que se nombraCrmDemoDataContext en este tutorial. Para recuperar los datos, hay que crear primero una instancia del contexto, a continuación, preparar una consulta con LinqConnect , y luego acceder al objeto devuelto por la consulta, que puede ser una colección de objetos o un objeto único. Vamos a leer todos los datos de la Compañía mesa, ordenar por CompanyID, y salida de algunas columnas.Agregue el siguiente bloque de código al método Main:

C # Contexto CrmDemoDataContext = nueva CrmDemoDataContext (); var query = de ella en context.Companies orderby it.CompanyID seleccionarlo; foreach (comp Compañía en consulta) Console.WriteLine ( "{0} | {1} | {2}" , comp.CompanyID, comp.CompanyName, comp.Country); Console.ReadLine (); Visual Basic Dim contexto Como CrmDemoDataContext = Nuevo CrmDemoDataContext Dim query = De él En context.companies _ Ordenar por it.CompanyID _ Seleccione que

Dim borrador Como empresa Para Cada borrador En consulta Console.WriteLine ( "{0} | {1} | {2}" , comp.CompanyID, comp.CompanyName, comp.Country) Siguiente Console.ReadLine ()

Tan sencillo como eso. Preparas una consulta y luego iterar a través de él como lo haría con una colección habitual de objetos. La interacción de base de datos se lleva a cabo por LinqConnect en el fondo. Ahora vamos a ver quién es quién en este ejemplo de código.

CrmDemoDataContext es el nombre de la clase que sabe todo acerca de su modelo y hace todo lo

posible para recuperar y modificar datos relacionados en la base de datos. Todas las operaciones se

realizan dentro LinqConnect propiedades y métodos de esta clase. Esta clase está diseñada para ser

ligero y no es caro para crear, por lo tanto, se recomienda crear una nueva instancia DataContext para

cualquier "unidad de trabajo" y disponer después de esta unidad se ha completado.

consulta , que son nombres de variables arbitrarias de la cuenta de LINQ to SQL. El primero se utiliza

como la colección de objetos de datos, este último se utiliza para hacer referencia a las entidades

individuales en una colección y existe dentro de sólo el comunicado.

Page 9: 6- LINQ to MySQL Tutorial

context.Companies refiere a una propiedad pública de la clase CrmDemoDataContext. Esta propiedad

representa la colección de todas las empresas en el contexto.

Compañía (en el foreach declaración) es el nombre de una clase autogenerado. Esta clase se asigna a

la Compañíatabla en la base de datos y se nombra después de él.

Aquí está la salida del proyecto en la consola:

Tenga en cuenta que el código de consulta LINQ simplemente describe la consulta. No ejecutarlo. Este enfoque se conoce como ejecución diferida.

Ahora vamos a los datos de consulta de dos tablas unidas con una clave externa. Reemplace el código antiguo con esto:

C # Contexto CrmDemoDataContext = nueva CrmDemoDataContext (); var query = de ella en context.Companies orderby it.CompanyID seleccionarlo;

foreach (Compañía borrador de consulta) { si (comp.PersonContacts.Count> 0) { Console.WriteLine ( "{0} | {1} | {2}" , comp.CompanyName, comp.PersonContacts [0] .FirstName, comp.PersonContacts [0] .LastName); } }

Console.ReadLine (); Visual Basic Dim contexto Como CrmDemoDataContext = Nuevo CrmDemoDataContext

Page 10: 6- LINQ to MySQL Tutorial

Dim query = De él En context.companies _ Ordenar por it.CompanyID _ Seleccione que

Dim borrador Como empresa Para Cada borrador En consulta Si comp.personcontacts.Count> 0 Entonces Console.WriteLine ( "{0} | {1} | {2}" , _ comp.CompanyName, comp.personcontacts (0) .FirstName, _ comp.personcontacts (0) .LastName) Termine Si Siguiente

Console.ReadLine ()

Como puede ver, la instrucción de consulta LINQ no cambió en absoluto. Los datos sobre las personas de contacto se recuperan de la base de datos automáticamente cuando se accede a la propiedad correspondiente del objeto social. Esta es una de las mejores cosas de LINQ: usted no tiene que preocuparse de dependencias al escribir consultas.

Inserción de nuevos datos Lo anterior fue añadiendo filas a las tablas, ahora se acaba de agregar nuevos objetos a colecciones de contexto.Cuando esté listo para enviar los cambios a la base de datos, llamar a los SubmitChanges () de contexto. Antes de hacer esto, primero debe configurar todas las propiedades que no admiten nulos ( Nothing valores). El método SubmitChanges () genera y ejecuta los comandos que realizan el equivalente INSERT, UPDATE o DELETE contra la fuente de datos. Vamos a añadir un nuevo producto y una nueva categoría a la base de datos. Reemplace el código antiguo con esto:

C # Contexto CrmDemoDataContext = nueva CrmDemoDataContext (); // Crear una nueva categoría ProductCategory newCategory = nueva ProductCategory (); newCategory.CategoryID = 1,000; newCategory.CategoryName = "Nueva categoría" ;

// Crear un nuevo producto Producto NEWPRODUCT = nuevo producto (); newProduct.ProductID = 2,000; newProduct.ProductName = "Nuevo producto" ; newProduct.Price = 20;

// Asociar el nuevo producto con la nueva categoría newProduct.ProductCategory = newCategory; context.Products.InsertOnSubmit (NEWPRODUCT);

// Enviar los cambios a la base de datos. // Hasta que no lo hace, los cambios se almacenan en caché en el lado cliente. context.SubmitChanges ();

Page 11: 6- LINQ to MySQL Tutorial

// Solicitar el nuevo producto de la base de datos var query = de ella en context.Products donde it.ProductID == 2000 seleccionarlo; // Como nos consulta para un solo objeto en vez de una colección, podemos utilizar el método primero () Producto = query.First (); Console.WriteLine ( "{0} | {1} | {2}" , product.ProductCategory.CategoryName, product.ProductName, product.Price); Console.ReadLine (); Visual Basic Dim contexto Como CrmDemoDataContext = Nuevo CrmDemoDataContext 'Crear una nueva categoría Dim newCategory Como productcategory = Nuevo productcategory () newCategory.CategoryID = 1,000 newCategory.CategoryName = "Nueva categoría"

'Crear un nuevo producto Dim NEWPRODUCT Como producto = Nuevo producto () newProduct.ProductID = 2,000 newProduct.ProductName = "Nuevo producto" newProduct.Price = 20 "Asociar el nuevo producto con la nueva categoría newProduct.productcategory = newCategory context.products.InsertOnSubmit (NEWPRODUCT)

"Enviar los cambios a la base de datos. 'Hasta que no lo hace, los cambios se almacenan en caché en el lado cliente. context.SubmitChanges () 'Solicitar el nuevo producto de la base de datos Dim query = De él En context.products _ Donde it.ProductID = 2,000 _ Seleccione que

'Como nos consulta para un solo objeto en vez de una colección, podemos utilizar el método primero () Dim producto Como producto = query.First () Console.WriteLine ( "{0} | {1} | {2}" , _ product.productcategory.CategoryName, product.ProductName, product.Price) Console.ReadLine ()

Se crea el método InsertOnSubmit () para cada colección en el contexto. Este método almacena en la base de datos la información acerca de todos los objetos vinculados. Como se muestra en el ejemplo, sólo es necesario llamar a InsertOnSubmit () una vez para presentar ambos objetos de productos y de categoría.

Tenga en cuenta que después de haber agregado el nuevo producto y categoría mediante la presentación de los cambios, no se puede ejecutar esta solución de nuevo de inmediato. Para ejecutar la solución, cambie el ID de los objetos que se añaden.

Actualización de datos

Page 12: 6- LINQ to MySQL Tutorial

Instancias de la entidad se modifican como de costumbre. La única cosa a recordar es que usted tiene para invocar el método () SubmitChanges para enviar los datos a la base de datos.

Anexar el siguiente bloque de código existente y poner en marcha el proyecto:

C # product.ProductName = "producto Editado" ; product.Price = 15; context.SubmitChanges (); Visual Basic product.ProductName = "producto Editado" product.Price = 15 context.SubmitChanges ()

Eliminación de datos Para extraer una instancia de un contexto, utilizar el método DeleteOnSubmit de la colección correspondiente. El objeto se elimina de la colección de su tipo, pero no destruido. Para borrar los datos del objeto de la base de datos, invocar las SubmitChanges () método.

Usted puede hacer esto con un bloque de código como el siguiente:

C # context.products.DeleteOnSubmit (NEWPRODUCT); context.productcategories.DeleteOnSubmit (newCategory); context.SubmitChanges (); Visual Basic context.products.DeleteOnSubmit (NEWPRODUCT) context.productcategories.DeleteOnSubmit (newCategory) context.SubmitChanges ()

Supresión de objetos se ve afectada por atributos en el modelo. Cuando el DeleteRule parámetro es Cascade , objetos dependientes se eliminan automáticamente. Cuando este parámetro es SetNull , no se eliminan los objetos dependientes, pero la relación es anulada. Cuando se especifica ninguna regla, el orden de la secuencia de eliminación es importante.

Información Adicional Ahora que se puede realizar la manipulación de datos básica con LinqConnect , puede pasar a temas más avanzados. dotConnect para MySQL incluye una sección de ayuda dedicada a la tecnología de LinqConnect.Puede acceder a él en línea en http://www.devart.com/linqconnect/docs/ . LinqConnect se desarrolla en estrecha colaboración con la implementación de la Microsoft de LINQ to SQL, así que usted puede encontrar información útil en MSDN:

LINQ to SQL

LINQ to SQL: .NET Language-Integrated Query de datos relacionales

Por experiencia práctica, utilizar muestras enviadas con dotConnect para MySQL. Puede acceder a las muestras en el menú Inicio.

Page 13: 6- LINQ to MySQL Tutorial

Para comprender más profundamente las obras de motor LinqConnect, puede ver las sentencias SQL generadas en DBMonitor o el uso de la propiedad DataContext.Log.