Escolar Documentos
Profissional Documentos
Cultura Documentos
SubSonic 2.1
Tabla de Contenidos
1. Introducción................................................................................................................................................................................ 3
2. Herramientas .............................................................................................................................................................................. 4
2.1. Microsoft Visual Studio 2008 ............................................................................................................................................ 4
2.2. Microsoft Visual Studio 2008 Service Pack 1 (ISO) ......................................................................................................... 4
2.3. Microsoft SQL Server 2005 Express SP2.......................................................................................................................... 4
2.4. SubSonic ORM .................................................................................................................................................................. 5
9. Ejecución de la aplicación........................................................................................................................................................ 41
2
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
1. Introducción
En este tutorial se desarrollará una aplicación Windows que accederá a una base de datos SQL Server,
siguiendo una arquitectura de capas. El tutorial explica paso a paso y en forma detallada la construcción de la
aplicación, haciendo fácil el entendimiento inclusive para aquellos con pocos conocimientos de programación
sobre la plataforma Microsoft.
En ese sentido se utilizará / creará una base de datos de Personas (en SQL Server Express 2005), y una
aplicación Windows (desarrollada con Visual Studio 2008) con el lenguaje C# (CSharp), que permitirá dar
mantenimiento a la información con las opciones clásicas de creación, actualización y eliminación.
Para la creación de la capa de acceso a datos, se utilizará el patrón ActiveRecord mediante el ORM SubSonic,
ya que nos brinda gran productividad en la generación del mapeo de las clases con las tablas de la base de
datos.
Se espera que durante el desarrollo de este tutorial no se presenten errores, sin embargo para consultas, dudas
o reporte de algún error pueden contactarme a eriveraa@gmail.com.
3
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
2. Herramientas
Para el desarrollo del taller es necesaria la instalación de ciertas herramientas básicas de programación, como
el Visual Studio 2008 y el SQL Server Express 2005. Al terminar esta sección se tendrán instaladas las
herramientas con la cual podremos desarrollar todo el taller.
Sin embargo, se recomienda descargar la versión Visual Studio Team System 2008 / Team Suite, desde la
siguiente dirección: http://msdn.microsoft.com/en-us/vsts2008/products/cc268310.aspx
TIP: Al instalar, elegir la instalación personalizada o completa, confirmando que se instalen los
componentes “Visual C#” y “Visual Web Developer”. Puede obviarse la instalación de SQL Express
2005 porque la instalaremos manualmente.
Desde esa página descargar SQL Server 2005 Express Edition with Advanced Services SP2
(http://go.microsoft.com/fwlink/?linkid=65109)
TIP: Al instalar, elegir la instalación personalizada o completa, confirmando que se instale el componente
“SQL Server Management Studio Express” (la consola administrativa de SQL Server 2005).
4
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
Información adicional de dicho ORM como manuales, tutoriales y videos los pueden encontrar en:
http://subsonicproject.com/
5
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
La creación de la BD se realizará agregando una base de datos al item Databases del Object Explorer:
6
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
Se agregará la base de datos recién creada, y se verá de la siguiente manera en el Object Explorer:
7
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
Adicionalmente, se modifica la propiedad “Is Identity” del campo a ID y establecerla en Yes. Como se
puede observar en la imagen:
8
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
9
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
10
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
Seleccionar el tipo de proyecto “Visual Studio Solutions” y luego la plantilla “Blank Solution”. Darle el
nombre Personas:
12
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
13
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
14
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
15
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
16
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
17
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
Igual que en el paso anterior creamos el formulario frmEdicionPersona que nos permitirá editar la
información de las personas:
18
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
6.1. Introducción
El diseño de los formularios básicamente consiste en operaciones de “Drag and Drop” (arrastrar y soltar),
es decir se arrastrarán los controles necesarios desde el Toolbox (caja de herramientas) y se soltarán sobre
la superficie del formulario (esta superficie por lo general es de color plomo) construyendo de esta manera
todo el aspecto visual del formulario.
El Toolbox por lo general se encuentra en la parte izquierda del IDE del Visual Studio:
Al pasar el Mouse por el Toolbox se expandirá mostrando todos los controles disponibles para “arrastrar y
soltar” sobre el formulario, de la siguiente manera:
19
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
20
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
Luego, agregar un objeto StatusLabel al control ssBarraStatus (StatusStrip) con las siguientes
propiedades:
21
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
22
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
23
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
1 – Create GUID
2 – Dotfuscator Community Edition
3 – SubSonic DAL (lo cual significa que es el item: External Command 3). Esto se utilizará mas
adelante.
7.1.4. Ir a Tools > Customize y agregar una nueva barra de herramientas (Toolbar) con el nombre
SubSonic:
7.1.5. Ir a la pestaña Commands. Seleccionar la categoría “Tools” y luego el “External Command 3”.
7.1.6. Arrastrar el “External Command 3” hacia el Toolbar “SubSonic” que hemos creado
anteriormente, quedando de la siguiente manera:
25
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
Ejecutar el programa SubStage desde el menu Start / All Programs / SubSonic / SubSonic 2.1 Final de
Microsoft Windows. Se verá una pantalla como esta:
Presionar el botón derecho sobre el item “Connection Strings” y seleccionar la opción “Add Connection
String”
26
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
Project Properties
Propiedad Valor
Name Personas
Propiedad Valor
ConnectionStringId Personas
GeneratedNamespace Personas.Library
Name SQLProvider
ProviderTypeId SQL Server
Dar click en el botón “Test Connection” para probar la conexión. Se debe obtener el mensaje:
“Connection Successful” en la parte inferior, como se observa en la pantalla:
27
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
28
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
</connectionStrings>
<SubSonicService defaultProvider="SQLProvider" enableTrace="false" templateDirectory="">
<providers>
<clear/>
<add name="SQLProvider" type="SubSonic.SqlDataProvider, SubSonic"
connectionStringName="Personas" generatedNamespace="Personas.Library"/>
</providers>
</SubSonicService>
</configuration>
29
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
Luego, agregamos la referencia hacia la librería SubSonic.dll, la cual debe estar en la carpeta
“C:\Program Files\SubSonic\SubSonic 2.1 Final\SubSonic”:
- System.Web
- System.Configuration
Ahora agregamos un archivo de configuración, mediante la opción: “Add > New Item > Application
Configuration File” y le damos el nombre de App.config.
30
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
En este archivo (App.config) copiaremos el código generado por SubStage (en el paso anterior),
quedando de la siguiente manera:
Finalmente, grabar todos los archivos mediante el menú: File > Save All.
Al hacer click en OK, se invocará al generador SubSonic y generará las clases necesarias dentro de la
carpeta “\Generated” del proyecto Personas.Library.
31
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
Para visualizar lo generado, es necesario activar la visualización de archivos ocultos, haciendo clic en el
icono (Show All Files).
Ahora, seleccionar los archivos que se han generado dentro de la carpeta “Generated” e incluirlos en el
proyecto mediante la opción “Include In Project”:
A partir de este momento, las clases están incluidas en nuestro proyecto Personas.Library y las podemos
acceder desde nuestra aplicación Windows o cualquier aplicación que haga referencia a
Personas.Library.
32
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace Personas.WinApp
{
static class Program
33
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmPrincipal());
}
}
}
namespace Personas.WinApp
{
class Utils
{
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Personas.Library;
Agregar las variables locales y modificar el constructor del formulario de la siguiente manera:
namespace Personas.WinApp
{
public partial class frmEditarPersona : Form
{
private ModoFormularioEdicion _modo;
private string _ID;
private Persona _obj;
this._modo = modo;
this._ID = ID;
}
34
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
Los nombres de los eventos se pueden generar automáticamente al hacer doble clic sobre el control. Por
ejemplo al hacer doble clic sobre el botón Guardar, se generará el evento btnGuardar_Click en el
código fuente. Ahora, agregar el código para el manejo de los eventos:
switch (_modo)
{
case ModoFormularioEdicion.Nuevo:
_obj = new Persona();
break;
case ModoFormularioEdicion.Modificar:
35
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
_obj =
Personas.Library.DB.Select().From<Persona>().Where(Persona.IdColumn).IsEqualTo(int.Parse(_ID))
.ExecuteSingle<Persona>();
this.ObtenerDatosDesdeObjeto();
break;
default:
break;
}
}
// Cerrar el formulario
this.Close();
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Personas.Library;
namespace Personas.WinApp
{
public partial class frmEditarPersona : Form
{
private ModoFormularioEdicion _modo;
private string _ID;
private Persona _obj;
this._modo = modo;
this._ID = ID;
}
switch (_modo)
{
case ModoFormularioEdicion.Nuevo:
_obj = new Persona();
36
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
break;
case ModoFormularioEdicion.Modificar:
_obj =
Personas.Library.DB.Select().From<Persona>().Where(Persona.IdColumn).IsEqualTo(int.Parse(_ID))
.ExecuteSingle<Persona>();
this.ObtenerDatosDesdeObjeto();
break;
default:
break;
}
}
37
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
this.IngresarDatosAObjeto();
// Cerrar el formulario
this.Close();
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Personas.Library;
namespace Personas.WinApp
{
public partial class frmPrincipal : Form
{
public frmPrincipal()
{
InitializeComponent();
}
// Enlazar la grilla
dgvGrilla.DataSource = lista;
38
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
{
// Crear el objeto formulario
frmEditarPersona frm = new frmEditarPersona(ModoFormularioEdicion.Nuevo, "");
// Preguntar
DialogResult result = MessageBox.Show("Está seguro de eliminar el elemento
seleccionado?", "Eliminar", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
// Eliminar
if (result == DialogResult.Yes)
{
// Eliminar de la BD
int RegistrosAfectados =
DB.Delete().From<Persona>().Where(Persona.IdColumn).IsEqualTo(int.Parse(ID)).Execute();
// Mensaje
MessageBox.Show(string.Format("Se eliminó {0} elemento(s).",
RegistrosAfectados), "Eliminar", MessageBoxButtons.OK, MessageBoxIcon.Information);
// Actualizar el formulario
this.ActualizarFormulario();
}
}
else
{
MessageBox.Show("No se seleccionó ningún elemento, o no existen elementos a
39
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
40
Tutorial de acceso a datos con Visual Studio 2008 y SubSonic
Autor: Eduardo Rivera Alva (eriveraa@gmail.com)
9. Ejecución de la aplicación
Al ejecutar la aplicación debe verse similar a las siguientes pantallas:
41