sábado, 15 de octubre de 2011

Introduction MVC (Modelos)

El tema de hoy son los Modelos. Los objetos de modelo son las partes de la aplicación que implementan la lógica del dominio de datos de la aplicación. A menudo, los objetos de modelo recuperan y almacenan el estado del modelo en una base de datos. Por ejemplo, un objeto Product podría recuperar información de una base de datos, trabajar con ella y, a continuación, escribir la información actualizada en una tabla Productos de una base de datos de SQL Server

En el siguiente ejemplo nos conectaremos a la base datos Northwind la cual es requerida:

1.) Crear un nuevo proyecto - File - New proyect - ASP.Net MVC 3 Web Applicacion


Name: Northwind





2.)Elegir el tipo de proyecto MVC - Internet Applicacion- View engine- Razor



3.) Crear los Modelos


3.1) Categorias
En la carpeta de Models cree un nuevo archivo ( clic derecho nueva clase) en esta clase solo definiremos los campos que nos interesan, los otros los ignoraremos, note que hemos definido la llave primaria necesaria para los contextos.


using System;
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations;  

namespace Northwind.Models 
{ 
    public class Categories
    { 
        [Key] 
        public int CategoryID { get; set; }
        public string CategoryName { get; set; }
        public virtual ICollection<Products> Products { get; set; }
         
    } 
} 




3.2) Productos
En la carpeta de Models cree un nuevo archivo ( clic derecho nueva clase) en esta clase No solo hemos definido los campos, si no que también, tenemos otras definiciones:


Display :  Etiqueta que acompañara al campo.
Required: Campo de llenado obligatorio, se pude definir mensaje.
Maxlength: Maximo de caracteres.
DisplayFormat: Formato de mostrar útil para campos de numéricos o fecha.


using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations;  

namespace Northwind.Models 
{ 
    public class Products 
    { 
        [Key] 
        public int ProductID { get; set; }

        [Display(Name = "Nombre")] 
        [Required(ErrorMessage = "Nombre de Producto Requerido")] 
        [MaxLength(50)] 
        public string ProductName { get; set; }

        [Display(Name = "Proveedor")] 
        public int SupplierID { get; set; }
         
        [Display(Name = "Categoria")] 
        public int CategoryID { get; set; }

        [Display(Name = "Precio")] 
        [DisplayFormat(DataFormatString = "{0:c}")] 
        [Column(TypeName = "money")]  
        public decimal UnitPrice { get; set; }

         [Display(Name = "Disponibles")] 
        public Int16 UnitsInStock { get; set; }

         [Display(Name = "Descontinuado")] 
        public bool Discontinued { get; set; }

        public virtual Categories Categories { get; set; }
    } 
} 






3.3) Contexto


En la carpeta de Models cree un nuevo archivo ( clic derecho nueva clase) en esta clase se creara el contexto que se encargara de vincular nuestros modelos con nuestras tablas.


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using Northwind.Models;  
using System.Data.Entity.ModelConfiguration.Conventions; 
using System.Data.Entity;  



namespace Northwind.Models 
{ 
    public class NorthwindContex : DbContext
    { 
       
        public DbSet<Categories> Categories { get; set; }
        public DbSet<Products> Products { get; set; }

    } 
}






3.4) Configurar conexión a base de datos
Abra el web config y agregue la siguiente linea, la cual nos proporcionara la conexión con la base de datos (El connectionStrings esta puesto solo como referencia lo mas seguro es que ya este en su web config):


<connectionStrings> 
    <add name="NorthwindContex" 
   connectionString="data source=localhost;
   initial catalog=northwind;persist security info=True; 
   user id=sa;password=P@ssw0rd" 
   providerName="System.Data.SqlClient" /> 
  </connectionStrings> 


4.) Ahora crearemos el controlador:
Clic derecho sobre la carpeta controller 


Luego aparecerá una ventana la cual la tenemos que llenar con lo siguiente:



Controller name: ProducsController.
Template: Controller with read/write actions and views, using Entity Framework.
Model class: Student (Northwind.Models). (Si no esta compile el proyecto)
Data context class: NorthwindContext (Northwind.Models).
    Views: Razor (CSHTML).




5.) Modificando el Menu.


Para esto cambiaremos la vista Layout la cual se encuentra bajo la carpeta view y luego share, Agregaremos la llamada a nuestras vistas generadas:




  • @Html.ActionLink("Products", "Index", "Products")



  • 6.) Finalmente como debe quedar nuestro ejemplo, al presionar nuevo, podremos ver mucha funcionalidad como validaciones nombre de los campos, etc.



    No hay comentarios.: