//
archives

net

Esta etiqueta está asociada a 4 entradas

Operaciones CRUD con ASP.NET MVC 3 y Entity Framework Parte 1.

 

En este articulo mostraré como realizar las operaciones básicas (CRUD)  para manipular una base de datos (SQL Server 2008 R2) usando Entity Framework.

Para poder seguir esta serie de artículos donde intentare explicar  como usar estas tecnologías necesitas lo siguiente:

 

 

 

En primer lugar necesitamos crear un nuevo proyecto ASP.NET MVC 3 Application puedes llamarlo como quieras.

image

En la siguiente ventana Seleccionamos Razor en View Engine y en mi caso voy usar la semantica de HTML5 y presionamos ok.

image

Para este ejemplo utilizaremos la siguiente base de datos en SQL Server 2008 R2

image

No te preocupes adjunto el script de la base de datos en el Zip del ejemplo al final del articulo.

El siguiente paso es crear el modelo de la  base datos  seleccionamos en nuestro proyecto la carpeta Models y  presionamos botón derecho del mouse nos vamos a Add –> New Item y nos aparecerá esta ventana donde iremos a la sección de Data y Seleccionamos ADO.NET Entity Data Model.

image

Nos aparecerá la siguiente ventanas tendremos que especificar la base de datos y siguiendo el asistente de Visual Studio (No lo explico porque doy por echo que esto ya es algo común y no es el objetivo de este articulo para ver esto puedes consultar  este articulo de MSDN) yo le llame MyDataModel.

 

image

Este es el modelo generado por Entity Framework si se dan cuenta no aparece la tercera tabla porque la relación es de muchos a muchos y si esta correctamente elaborada nuestra relación en SQL Server Entity detectara automáticamente y configurara  de tal forma que podamos accesar a la información de forma rápida y sencilla eso lo veremos mas adelante.

Ahora seleccionamos la carpeta Controllers de nuestro proyecto y agregamos un nuevo Controller , en esta ventana nos aparecerán varias opciones que nos pueden ayudar a ahorrarnos bastante trabajo al momento de estar programando.

El controller debe tener los siguientes datos:

image

En el campo Controller name: Es importante respetar el sufijo Controller (no borrarlo)  y en el Template seleccionamos las operaciones de leer/escribir y views ,con esto Entity Framework nos creara todo el codigo necesario para ver , editar y eliminar sin necesidad de que nosotros lo escribamos(Fabuloso no!)

Si nos damos cuenta el asistente nos ha creado el Controller y las Views  necesarias.

Ahora como vemos esto ? bueno es sencillo.

Vamos a la carpeta Shared y abrimos el _Layout.cshtml y modificamos el contenido de la etiqueta nav por esto:

  <nav>
                <ul id="menu">
                    <li>@Html.ActionLink("Home", "Index", "Home")</li>
                    <li>@Html.ActionLink("Empleados", "Index", "Empleado")</li>
                    <li>@Html.ActionLink("About", "About", "Home")</li>
                  
                </ul>
            </nav>

Lo que hicimos aquí es agregar un link al menú que nos lleve a los empleados  y como resultado obtenemos:

Si seguimos los pasos correctamente al momento de dar click en empleados en el menu nos mostrara lo siguiente:

image

Todo es totalmente editable Entity Framework nos genera todo el codigo y vistas para realizar las operaciones basicas con la base de datos y como verán esto es muy sencillo.

Claro en aplicaciones del mundo real, los escenarios son muy diferentes y complejos pero esto nos sirve de guia para de aqui partir para hacer nuestras aplicaciones mas completas.

En el siguiente Articulo agregaremos funcionalidad de busqueda a  la vista de nuestros empleados.

Espero esta entrega haya sido de utilidad .

Saludos .

Adjunto el proyecto junto con el script de la base de datos.

https://skydrive.live.com/embedicon.aspx/BlogExamples/MvcApplication2.rar?cid=b6646f389c71fe2f&sc=documents

Ejemplo simple del Patrón MVVM y WPF(Conceptos).

WPF es una tecnología fascinante no solo porque te permite hacer grandiosas cosas con las interfaces si no que ofrece mecanismos para poder facilitar el desarrollo de nuestras aplicaciones.

Una breve introducción  sobre que es el patrón MVVM:

Una breve explicación fuera de tecnicismos (que la mayoría de ocasiones confunde en vez de ayudar) es que ofrece la posibilidad de separar prácticamente en su totalidad el código fuente de la interface en otras palabras que uno puede borrar, rediseñar  parcial o totalmente las interfaces que se presentan al usuario final.

El patrón MVVM se divide en 3 principales conceptos que hay que entender antes de implementarlo.

Model(Modelo):

El modelo no es mas que simplemente los datos, por ejemplo los datos de una persona:Nombre ,Apellidos,Ocupación etc.…

ModelView (Vista-Modelo) :

El ModelView es el encargado de en términos vincular los datos de nuestro modelo a la interface, además de reflejar los cambios hechos en la interface hacia el modelo. Yo lo entiendo en términos generales es como el intermediario entre los datos y la interface  esto permite que el código fuente y la interface vivan independientes.

View(Vista):

Como su nombre lo indica son las interfaces  no hay mas que decir solo que los controles o componentes de la interface se enlazaran al ViewModel para que este se encargue de efectuar los cambios al modelo.

 

Claro este es un concepto muy general porque MVVM abarca mas que eso. No estaría mal que investigaran un poco mas sobre ello a mi en lo personal me ha costado mucho tiempo y trabajo entenderlo por eso trato que este artículo sea lo mas sencillo posible.

Vamos a realizar un ejemplo sencillo sobre como trabaja este patrón:

Para esto vamos a crear un simple proyecto de WPF yo en lo personal me gusta mas VB.NET así que este  artículo se basara en este lenguaje.

Para empezar ha que crear el modelo:

Como? simplemente una nueva clase  que llamaremos Game

Esta clase contiene algunas propiedades de un videojuego:


Public Class Game


    Public Property Name As String

    Public Property Description As String

    Public Property Platform As String



End Class

 

Ahora el siguiente paso es crear el ViewModel que no es mas que otra clase

pero a diferencia de la otra esta implementa la interface INotifyPropertyChanged

Esta interface se usa para notificar que alguna de nuestras propiedades ha cambiado es muy útil en este patrón.

Aquí esta la clase:


Imports System.ComponentModel
Imports System.Collections.Generic
Public Class GameViewModel
    Implements INotifyPropertyChanged

    Public Sub New()
        Dim Game1 As New Game
        Dim Game2 As New Game
        Dim Game3 As New Game

        Game1.Name = "Halo Reach" : Game1.Description = "Shotter" : Game1.Platform = "Xbox 360"
        Game2.Name = "BioShock" : Game2.Description = "Shotter" : Game2.Platform = "Xbox 360"
        Game3.Name = "Devil May Cry" : Game3.Description = "Shotter" : Game3.Platform = "Xbox 360,PS3"

        Games = New List(Of Game)
        Games.Add(Game1)
        Games.Add(Game2)
        Games.Add(Game3)
    End Sub





    Private _Games As List(Of Game)
    Public Property Games As List(Of Game)
        Get
            Return _Games
        End Get
        Set(value As List(Of Game))
            _Games = value
            NotifyPropertyChanged("Games")

        End Set
    End Property

    Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) _
Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged


    Private Sub NotifyPropertyChanged(ByVal info As String)
        RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(info))
    End Sub


End Class

En esta clase he creado una lista del tipo Game en ella tendremos nuestra colección de video juegos.

Además cabe decir que la parte mas interesante de esta clase es la manera en que que notificamos algún cambio en las propiedades estas pueden ser cambiadas ya sea por código o por medio de la interface.


  Private Sub NotifyPropertyChanged(ByVal info As String)
        RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(info))
    End Sub

Esta rutina es la encargada disparar el evento que notifica cuando una propiedad ha cambiado y para lograr esto simplemente debemos mandarla a llamar en el set de cada propiedad que deseemos actualizar.


 Private _Games As List(Of Game)
    Public Property Games As List(Of Game)
        Get
            Return _Games
        End Get
        Set(value As List(Of Game))
            _Games = value
            NotifyPropertyChanged("Games")

        End Set
    End Property

Por ultimo ahora solo queda enlazar nuestro ViewModel con nuestra interface(View)

Esto se hace en el constructor de la clase del MainWindow.xaml


  Public Sub New()

        ' This call is required by the designer.

        InitializeComponent()
        'Enlazamos el ViewModel con la interface.
        Me.DataContext = New GameViewModel

        ' Add any initialization after the InitializeComponent() call.

    End Sub

Creamos nuestra pequeña interfaz que solo se compone de un DataGrid la parte interesante es como le indicamos al DataGrid que llene la colección de videojuegos esto se logra mediante su propiedad ItemsSource  y para que genera automaticamente las columnas solo basta como poner en True la propiedad AutoGenerateColumns

El código XAML luce así:


 <DataGrid AutoGenerateColumns="True" Height="270" HorizontalAlignment="Left" 
                  Margin="12,29,0,0" Name="DataGrid1"
                  VerticalAlignment="Top" Width="479"
                  ItemsSource="{Binding Games}"/>

y si le damos F5 a nuestro proyecto se debería ver algo así:

image

Como verán al principio debe ser algo confuso porque tanto para solo agregar una colección de datos , la ventaja principal es que nos brinda la posibilidad de cambiar de controles, o de interfaces hasta reutilizar el código en otras interfaces además utilizando las características de WPF en una aplicación real este patrón brinda una escalabilidad enorme y fácil de mantener.

Por ahora a sido todo espero le haya sido útil este pequeño artículo.

Saludos.!

Decarga el Codigo

Nota: Esta desarrollado este ejemplo en VS2010 SP1

Instalar PostgreSQL 8.4 de manera Desatendida!

Bueno en esta ocasión les traigo  una manera tal vez no es tan eficiente pero si la complementan con un instalador es una manera muy útil de como instalar postgreSQL de manera desatendida  en artículos posteriores iré publicando como también crear  la base de datos igualmente de manera desatendida , además  como poder realizar un instalador que ejecute estas tareas he instalar nuestra aplicación  y el usuario final solo tenga que hacer el típico siguiente, siguiente etc…

Bueno a lo que vamos para poder realizar esta operación necesitamos crear un archivo.BAT  yo lo llame InstalarPost.BAT  con un Bloc de Notas.

aqui el codigo fuente:

@echo off
set _SCRIPT_DRIVE=%~d0
set _SCRIPT_PATH=%~p0
set R=%_SCRIPT_DRIVE%%_SCRIPT_PATH%
cd %R%
%R%%postgresplus-8.4.1-2-windows.exe –mode unattended –superpassword postgres  –unattendedmodeui none

Si analizan el código del BAT  busca la ruta de donde se ejecuta el bat y ahí mismo busca  el installer del PostgreSQL (eso significa que peguen el instalador de PostgreSQL donde tienen el BAT) después solo le damos los parámetros que se explican a continuación.

–mode unattend :Significa que es en modo silencioso o desatendido

–superpassword : Se entiende el password que se le da al usuario postgres que  PostgreSQL genera.(puede ser el pass que ustedes quieran

–unattendedmodeui : Le decimos que queremos que el usuario no tenga ninguna intervencion en la instalacion de PostgreSQL.

Nota: Este método al parecer no es compatible con versiones anteriores de PostgreSQL pues antes se instalaba mediante un .msi  asi solo es de cuidar que versión se quiere instalar.

Crear Aplicación con Derechos de Administrador (UAC) en .Net

Varias ocasiones nos hemos topado con el problema  de privilegios  en Windows Vista o Windows 7  por el control de cuentas de Usuario (UAC).

No nos deja escribir Archivos en algunos directorios,  nos  limita el acceso a algunas carpetas, no podemos editar el registro etc..

Solucion: Valido para Visual Studio 2008 y Visual Studio 2010.

Para que  nuestra Aplicación  se ejecute pidiendo  elevación de privilegios o se ejecute en modo Administrador basta con ir al Explorador de Soluciones:

Selecciona el Icono -> Mostrar todos los Archivos(show all Files)

en la Carpeta Mi Proyecto(My Project) esta un archivo app.manifest este archivo es el manifiesto de nuestra aplicacion.

dale doble click y te aparecera su  Codigo fuente, que no es mas que un  XML.

En esta parte solo queda sustituir  la linea:
<requestedExecutionLevel level=«asInvoker» uiAccess=«false» />
Por esta otra:
<requestedExecutionLevel level=«requireAdministrator» uiAccess=«false» />
Ahora Guardamos los Cambios   , Presionamos F5
Visual Studio les pedira  Reiniciar visual Studio con privilegios de Administrador   abren su proyecto y se van a la carpeta bin de su proyecto se daran cuenta de que ya esta el icono de seguridad de microsoft.
Nota: En Visual Studio 2010 deben elejir que tipo de compilacion sera si es Debug o Release dependiendo de esta afectara al exe que genere el proyecto.
en Visual Studio 2008 solo el Release se ejecuta en modo Administrador el Debug solo se ejecuta dentro del entorno de VS2008.
Espero este articulo le sea de utilidad y si comentan estaria mucho mejor!.Cya.

Encuesta del Mes.

Estadisticas del Blog

  • 53.995 hits