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

Entradas populares de este blog

Configuración de Modo de estado de Sesión StateServer para aplicaciones ASP NET de alta disponibilidad

Hola a todos, el objetivo de este post es mostrar cómo se configura una aplicación para que soporte balanceo de carga y este alojado en una granja de servidores.  Con esto se quiere lograr que la aplicación sea de alta disponibilidad. Se necesita que la sesión persista a pesar de que se redireccione al usuario hacia otro servidor (recordar que estamos con un balanceador en una granja de servidores) o se reinicie la aplicación. Para esto en ASP .NET, ya sea web form o mvc la forma de poder manejar este caso es configurando el modo de estado de sesión fuera del proceso. ASP .NET tiene los siguientes modos de estado de sesión: ·          Modo InProc , que almacena el estado de sesión en memoria en el servidor Web. Éste es el valor predeterminado. ·          Modo StateServer , que almacena el estado de sesión en un proceso distinto denominado "servicio de estado de ASP.NET". Este modo garantiza que el estado de sesión se mantiene si se reinicia la aplicación Web y qu

Manejo de Caché en ASP NET MVC

Hola a todos, el objetivo de este post es aclarar ciertos puntos sobre el manejo de caché en ASP NET MVC. El manejo de la caché correctamente nos permite mejorar el rendimiento de nuestras aplicaciones, permitiéndonos almacenar información de uso frecuente y dentro de la memoria de alta velocidad. El manejo de la caché se puede dar tanto en el servidor como en el cliente. Este es un resumen de manejo de caché en ASP NET MVC: Page Output Caching: Es el manejo de caché a nivel de página o de acción en MVC. El navegador web puede almacenar en caché cualquier solicitud HTTP GET durante un periodo predefinido por lo que si el usuario solicita la misma URL, el navegador no llama al servidor, si no que carga la página desde la caché del navegador local. Te da la opción de decidir donde se va almacenar la página ya sea en el cliente o en el servidor. Solo se necesita decorar la acción con el atributo "OutputCache" e indicarle como se va a manejar: Duration (tiempo de durac

Inicio de sesión basado en tokens con Web Api

Hola a todos, el objetivo de este post será realizar el mecanismo de inicio de sesión basado en tokens para un servicio Rest Full con Web Api y Owin. Antes de empezar veamos un poco de teoría: Web Api:     Es un marco que facilita la creación de servicios HTTP disponibles para una amplia variedad de clientes, entre los que se incluyen exploradores y dispositivos móviles. ASP.NET Web API es la plataforma perfecta para crear aplicaciones RESTful en .NET Framework. Autenticación basada en Token: La forma preferida hoy en día para autenticarse desde el front-end ya sea web o mobile es la de tokens por las siguientes razones: Escalabilidad de servidores: El token que se envía al servidor es independiente, contiene toda la información necesaria para la autenticación del usuario, por lo que añadir más servidores a la granja es una tarea fácil ya que no depende de una sesión compartida. Bajo acoplamiento: Su aplicación front-end no se acopla con el mecanismo de autenticación