Crear clases de LINQ to SQL con el Diseñador relacional de objetos
Actualización: noviembre 2007
Puede utilizar el Diseñador relacional de objetos (Diseñador R/O) para asignar clases LINQ to SQL a las tablas de una base de datos. Estas clases asignadas también se denominan clases de entidad. Las propiedades de una clase de entidad se asignan a las columnas de la tabla y puede enlazar los datos a los controles de un formulario Windows Forms. Para obtener más información sobre LINQ to SQL, vea Usar LINQ en C#.
Requisitos previos
En caso de que no haya instalado SQL Server Express durante la instalación de Visual C# Express, hágalo antes de continuar. Actualmente, no se admiten bases de datos SQL Server Compact 3.5 en LINQ to SQL. Para obtener información sobre cómo obtener SQL Server Express, consulte la sección Obtener SQL Server Express del tema Cómo: Instalar bases de datos de ejemplo.
También debe tener acceso a la versión SQL Server de la base de datos de ejemplo Northwind. Para obtener información sobre cómo obtener e instalar esta base de datos, vea Cómo: Instalar bases de datos de ejemplo.
Abrir el Diseñador relacional de objetos
Para abrir el Diseñador relacional de objetos
En el menú Archivo, haga clic en Nuevo proyecto.
En el cuadro de diálogo Nuevo proyecto, haga clic en Aplicación de Windows Forms, asígnele el nombre LINQToSQLSample y, a continuación, haga clic en Aceptar.
Se abre un nuevo proyecto de formularios Windows Forms.
En el menú Proyecto, haga clic en Agregar nuevo elemento.
Haga clic en la plantilla Clases de LINQ to SQL y escriba NorthwindSample.dbml en el cuadro Nombre.
Haga clic en Add.
Se agregará al proyecto un archivo Clases de LINQ to SQL vacío (NorthwindSample.dbml) y se abrirá el Diseñador relacional de objetos.
El Diseñador relacional de objetos consta de dos superficies de diseño: el panel de entidades, a la izquierda, y el área del panel de métodos, a la derecha. El panel de entidades es la superficie de diseño principal que muestra las clases de entidad definidas en el archivo. El panel de métodos es la superficie de diseño que muestra los métodos DataContext asignados a funciones y procedimientos almacenados. Para ocultar el panel de métodos, haga clic con el botón secundario en el Diseñador relacional de objetos y, a continuación, haga clic en Ocultar panel Métodos. En esta lección no se usará el panel de métodos, pero puede obtener más información sobre el mismo en Métodos DataContext (Diseñador relacional de objetos).
Haga clic en la superficie de diseño principal y compruebe que su nombre sea NorthwindSampleDataContext en la ventana Propiedades. Puede crear clases de entidad arrastrando tablas de base de datos del Explorador de bases de datos a la superficie del Diseñador relacional de objetos. No obstante, primero debe crear una conexión a la base de datos. Este proceso es parecido al que se describe en Cómo: Conectarse a una base de datos (C#), salvo que aquí se utilizará una base de datos de SQL Server Express.
Para conectarse a la base de datos de ejemplo Northwind
En el menú Ver, seleccione Otras ventanas y, a continuación, haga clic en Explorador de bases de datos.
Se abrirá el Explorador de bases de datos.
Haga clic en el botón Conectar a base de datos.
Se abrirá el cuadro de diálogo Agregar conexión.
En el cuadro de diálogo Agregar conexión, asegúrese de que el Origen de datos sea Archivo de base de datos de Microsoft SQL Server.
Haga clic en Examinar y seleccione la base de datos Northwind.mdf.
Haga clic en Probar conexión para comprobar que la conexión se ha realizado correctamente.
Haga clic en Aceptar para cerrar el cuadro de diálogo Agregar conexión.
Crear clases de entidad
Las tablas de la base de datos Northwind aparecerán ahora en el Explorador de bases de datos. Puede arrastrar tablas del Explorador de bases de datos al Diseñador relacional de objetos. De esta forma, se crean automáticamente clases de entidad con propiedades que se asignan a las columnas de las tablas seleccionadas.
Para crear clases de entidad
En el Explorador de bases de datos, expanda Northwind.mdfy, a continuación, expanda Tablas.
Arrastre Customers del Explorador de bases de datos a la superficie del Diseñador relacional de objetos. Si se le pide copiar el archivo de datos en su proyecto, haga clic en Sí.
Se creará una clase de entidad denominada Customer. Dicha clase contiene las propiedades correspondientes a las columnas de la tabla Customers.
Nota: El nombre de clase de entidad es Customer en lugar de Customers. Este comportamiento de cambio de nombre se denomina pluralización. Puede activarse o desactivarse en el cuadro de diálogo Opciones. Para obtener más información, consulte Opciones (Cuadro de diálogo): Visual Studio y Cómo: Activar y desactivar la pluralización (Diseñador relacional de objetos).
Arrastre Orders del Explorador de bases de datos a la superficie del Diseñador relacional de objetos.
Se creará una clase de entidad denominada Order. Observe que la clase Order tiene una relación (conocida como asociación) con la clase de entidad Customer. Las propiedades de la clase Order corresponden a las columnas de la tabla Orders.
Ahora que ya ha creado las clases de entidad, puede agregarlas a la ventana Orígenes de datos ejecutando el Asistente para la configuración de orígenes de datos.
Para agregar una clase de entidad como origen de datos de un objeto en la ventana Orígenes de datos
En el menú Generar, haga clic en Generar solución.
En el menú Datos, haga clic en Mostrar orígenes de datos.
En la ventana Orígenes de datos, haga clic en el botón Agregar nuevo origen de datos.
Haga clic en Objeto en la página Elegir un tipo de origen de datos y, a continuación, haga clic en Siguiente.
Expanda LINQToSQLSample y haga clic en la clase Customer.
Nota: Si la clase Customer no está disponible, haga clic en Cancelar, genere el proyecto y ejecute de nuevo el asistente.
Haga clic en Finalizar para crear el origen de datos y agregar la clase de entidad Customer a la ventana Orígenes de datos.
Enlazar controles a clases de entidad en un formulario Windows Forms
Puede agregar controles enlazados a datos a clases de entidad en un formulario Windows Forms. Para ello, arrastre tablas o campos de la ventana Orígenes de datos al formulario.
Para agregar controles enlazados a las clases de entidad
Haga clic con el botón secundario en Form1 en el Explorador de soluciones y, a continuación, haga clic en Ver diseñador.
En la ventana Orígenes de datos, expanda Customer.
Haga clic en la lista desplegable situada junto a CompanyName y, a continuación, haga clic en Label.
Arrastre CompanyName al formulario.
Arrastre Orders desde la ventana Orígenes de datos hasta Form1. Colóquela bajo CompanyName.
Haga clic con el botón secundario en Form1 en el Explorador de soluciones y, a continuación, haga clic en Ver código.
Agregue el código siguiente al formulario, en la parte superior de la clase Form, fuera de cualquier método concreto.
private NorthwindSampleDataContext northwindSampleDataContext1 = new NorthwindSampleDataContext();
Cree un controlador de eventos para el evento Form_Load y agregue el código siguiente a dicho controlador:
customerBindingSource.DataSource = northwindSampleDataContext1.Customers;
Presione F5 para ejecutar el código.
Cuando se abra el formulario, haga clic en el botón bindingNavigatorMoveNextItem para desplazarse por las compañías y comprobar que ordersDataGridView se ha actualizado para mostrar los pedidos del cliente seleccionado.
Guardar los cambios
Cuando se agregan controles al Diseñador relacional de objetos, el botón Guardar de bindingNavigator no está habilitado. Si desea permitir que los usuarios guarden los cambios que realicen, primero debe habilitar el botón Guardar y, a continuación, debe agregar código para guardar los datos cambiados.
Para habilitar el botón Guardar
Haga clic en el botón Guardar en bindingNavigator. (El botón con el icono de disco.)
En la ventana Propiedades, establezca la propiedad Enabled en True.
Haga doble clic en el botón Guardar para crear un controlador de eventos y pasar al Editor de código.
Agregue el código siguiente al controlador de eventos del botón Guardar:
northwindSampleDataContext1.SubmitChanges();
Presione F5 para ejecutar el código.
Cambie el valor de uno de los campos de Fecha de envío y presione la tecla TAB para confirmar el cambio.
Haga clic en el botón Guardar.
Cierre el formulario.
Presione F5 y compruebe que se haya guardado el cambio realizado.
Vea también
Tareas
Cómo: Conectarse a una base de datos (C#)
Cómo: Mostrar datos relacionados en un formulario
Cómo: Enlazar datos a consultas con LINQ