Ir al contenido principal

Uso de Entity Framework con VSTO 2008 y SQL Server 2008 R2 (Parte I)

Hola a todos, en esta ocasión quisiera mostrarles un poco de como es el uso de Entity Framework con Visual Studio 2008 y  SQL Server 2008 R2.
Estoy asumiendo a que tienen conocimiento básico de que es Entity Framework y SQL Server por lo que pasare directamente a la implementación.

Imaginemos que tenemos que hacer el mantenimiento de los datos de los clientes de la empresa en donde estamos desarrollando, nuestra tarea es crear un formulario donde podamos hacer el mantenimiento de los datos del cliente, por lo tanto necesitamos una tabla con los campos necesarios en SQL Server. Entonces vamos al SQL Management y hacemos login, creamos una base de datos llamada "PruebaEF" y corremos el siguiente script para crear la tabla clientes:


USE [PruebaEF]
GO
/****** Object:  Table [dbo].[Clientes]    Script Date: 09/07/2012 09:23:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Clientes](
[ClienteID] [int] IDENTITY(1,1) NOT NULL,
[Nombres] [nvarchar](60) NOT NULL,
[Apellidos] [nvarchar](60) NOT NULL,
[Dni] [nvarchar](8) NOT NULL,
[Telefono] [nvarchar](9) NOT NULL,
[Correo] [nvarchar](50) NOT NULL,
[FechaCreacion] [datetime] NOT NULL,
[FechaModificacion] [datetime] NULL,
 CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED
(
[ClienteID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

Una vez que tenemos la tabla creada, entonces creamos nuestro proyecto Windows Form Application en Visual Studio 2008.
Al formulario que nos sale por defecto, le ponemos un menú, un datagridview en la parte superior y Los controles necesarios para el ingreso de la data, también le cambiamos el nombre a "frmClientes" de manera que nos quede de la siguiente forma:

Ahora pasemos al grano, vamos a crear el entity framework, le damos click derecho al proyecto después Add/New Item escogemos Entity Framework Model le asignamos un nombre en este caso ModelBD y le damos click en Add, después nos sale otra pantalla y escogemos Generar desde Base de Datos, le damos siguiente, creamos una nueva conexión escogemos SQL Server, introducimos el nombre de nuestro servidor de base de datos y elegimos tipo de autenticación en mi caso sera Windows Authentication, testeamos la conexión que todo este bien y le damos siguiente, ahora nos aparece una pantalla mostrándonos los objetos que queremos mapear en este caso le damos a tablas y escogemos la tabla cliente que es la que vamos a usar y por ultimo le damos click en finish ahora ya nos debe haber creado nuestro modelo Entity Framework.
Acontinuación muestro una secuencia de imagenes referente a los pasos comentados arriba:







Una vez que tenemos el modelo de Entity Framework creado, procedemos crear la clase entidad donde estarán los get y set ; y otra clase encargada de las operaciones a realizar en la tabla clientes.
Primero creamos la clase entidad, añadimos una carpeta llamada "Entidades" y dentro de esta carpeta creamos la clase "ClienteEntidad" y escribimos el codigo necesario, nos debe quedar de la siguiente manera:


Public Class ClienteEntidad

    Private mClienteID As Integer
    Private mNombres As String
    Private mApellidos As String
    Private mDni As String
    Private mTelefono As String
    Private mCorreo As String

    Public Property ClienteID() As Integer
        Get
            Return mClienteID
        End Get
        Set(ByVal value As Integer)
            mClienteID = value
        End Set
    End Property

    Public Property Nombres() As String
        Get
            Return mNombres
        End Get
        Set(ByVal value As String)
            mNombres = value
        End Set
    End Property

    Public Property Apellidos() As String
        Get
            Return mApellidos
        End Get
        Set(ByVal value As String)
            mApellidos = value
        End Set
    End Property

    Public Property Dni() As String
        Get
            Return mDni
        End Get
        Set(ByVal value As String)
            mDni = value
        End Set
    End Property

    Public Property Telefono() As String
        Get
            Return mTelefono
        End Get
        Set(ByVal value As String)
            mTelefono = value
        End Set
    End Property

    Public Property Correo() As String
        Get
            Return mCorreo
        End Get
        Set(ByVal value As String)
            mCorreo = value
        End Set
    End Property

End Class

Una vez creada la clase entidad (encargada de recoger la data) creamos la clase encargada de las operaciones del cliente, añadimos una carpeta llamada "Clases" y creamos una clase llamada "Cliente".
Creamos los métodos para insertar y listar los cliente:



Public Class Cliente

    Public Function InsertarCliente(ByVal oCliEnt As ClienteEntidad) As Boolean
        Dim ModelBD As New PruebaEFEntities 'instanciamos modelo de entity framework
        'indicamos que vamos a usar nuestro modelo de entity framewok
        Using ModelBD
            'instanciamos una clase tabla del modelo
            'en este caso la tabla clientes
            Dim oCli As New Clientes
            'llenamos el objeto con los datos de
            'cliente entidad pasado como parametro
            oCli.Nombres = oCliEnt.Nombres
            oCli.Apellidos = oCliEnt.Apellidos
            oCli.Dni = oCliEnt.Dni
            oCli.Correo = oCliEnt.Correo
            oCli.Telefono = oCliEnt.Telefono
            oCli.FechaCreacion = DateTime.Now
            'agregamos al modelo EF
            ModelBD.AddToClientes(oCli)
            'vemos que este abierta la conexion
            If ModelBD.Connection.State = ConnectionState.Closed Then _
        ModelBD.Connection.Open()
            'agregamos al modelo EF
            Return (ModelBD.SaveChanges() > 0) 'retrnamos true si se hizo algun cambio
        End Using

    End Function

    Public Function ListarClientes() As List(Of Clientes)
        Dim ModelBD As New PruebaEFEntities 'instanciamos modelo de entity framework
        'indicamos que vamos a usar nuestro modelo de entity framewok
        Using ModelBD
            'realizamos query para listar los clientes con linq to entities
            Dim query = From c In ModelBD.Clientes _
                        Select c
            'retornamos la lista de clientes
            Return query.ToList()
        End Using
    End Function

End Class



Ahora pasamos a codificar los eventos del formulario, en el evento de formulario Load cargamos el datagridview con los clientes y también codificamos el evento Click del menú guardar para que haga la inserción del cliente, en estos eventos simplemente vamos a referenciar los métodos creados en la clase cliente, nuestro código debe quedarnos así:


Public Class frmClientes

    Dim oClienteFun As New Cliente 'instanciamos clase cliente que contiene los metodos

    Private Sub frmClientes_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'cargamos el datagridview con los clientes
        Me.dgClientes.DataSource = oClienteFun.ListarClientes
    End Sub

    Private Sub mnuGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuGuardar.Click
        Dim oClienteEntidad As New ClienteEntidad 'instanciamos entidad cliente

        'llenamos entidad con los datos ingresados
        oClienteEntidad.Nombres = txtNombres.Text
        oClienteEntidad.Apellidos = txtApellidos.Text
        oClienteEntidad.Correo = txtEmail.Text
        oClienteEntidad.Dni = txtDni.Text
        oClienteEntidad.Telefono = txtTelefono.Text

        'llamamos a la funcion que inserta el cliente
        If (oClienteFun.InsertarCliente(oClienteEntidad) = True) Then
            'mostramos mensaje de operacion exitosa
            MessageBox.Show("Cliente registrado satisfactoriamente!")
            'cargamos datagridview para que muestre los cambios
            Me.dgClientes.DataSource = oClienteFun.ListarClientes
        End If

    End Sub

End Class



Con esto ya debería funcionar nuestros métodos de insertar y listar con Entity Framework, aquí unas imágenes de como queda:



Cabe recalcar que la funcionalidad del formulario no esta codificada, solo la parte del insert y muestra de datos que nos sirve como muestra de uso de Entity Framework, ya en la siguiente entrada veremos la parte de modificación y eliminación de data; le adjunto el proyecto para que lo puedan descargar http://www.4shared.com/rar/AQ1zgRmw/Proyecto.html?refurl=d1url

Cualquier duda me escriben nomas, espero les sea útil este mini tutorial.

Gracias

Comentarios