En esta ocasión vamos a realizar una práctica de una pequeña biblioteca en la que usaremos CodeFirst para realizar un mvc.
La gran ventaja de CodeFirst es que realizando la lógica de nuestro mvc la base de datos se crea automáticamente.

Lo primero que debemos hacer es crear un nuevo proyecto ASP .NET marcamos MVC y le damos el nombre que queramos.

View post on imgur.com

Nos aseguramos de que tenemos instalado el Nugget de EntityFramework. Para ello hacemos clic con el segundo botón en la solución y selecionamos Manage Nugget package, vamos a Browse y escribimos EntityFramework, seleccionamos todas las casillas y presionamos install.

View post on imgur.com

Una vez nos aseguramos de que tenemos el nugget instalado, vamos a añadir una clase en la carpeta models a la que llamaremos Generos.cs. Para ello hacemos click con el segundo botón en la carpeta models, add y class. Le damos el nombre y la creamos.

View post on imgur.com

Usaremos el espacio de nombres System.Web.DynamicData y System.ComponentModel.DataAnnotations.
Y utilizaremos las decoraciones [TableName (“NombreTabla”)] en la clase y [Key] para indicar cual será la clave primaria.
Vemoslo en una imagen, que siempre queda mas claro.
Y aquí, el código utilizado.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Web.DynamicData;

namespace CodeFirst.Models
{
[TableName (“Genero”)]
public class Generos
{
[Key]
public int IdGenero { get; set; }
public string NombreGenero { get; set; }
}
}

View post on imgur.com

Hecho esto pasemos a crear otra clase a la que llamaremos Libros. Utilizaremos la misma metodología que en la clase anterior.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.DynamicData;
using System.ComponentModel.DataAnnotations;

namespace CodeFirst.Models
{
[TableName (“Libro”)]
public class Libros
{
[Key]
public int IdLibro { get; set; }
public int IdGenero { get; set; }
public string NombreLibro { get; set; }
public string Autor { get; set; }
public string Sinopsis { get; set; }
}
}

Ahora creamos otra clase en models a la que llamamos ContextoBiblioteca.cs Esta clas heredara de DbContext y la usaremos para la generación de objetos de nuestra aplicación.
Utilizaremos System.Data.Entity.ModelConfiguration.Conventions; Si copias el código directamente en vez de escribirlo no te saldrán los errores por no utilizar el espacio de nombres. Estos errores son por no utilizar los using de la parte superior.

View post on imgur.com

View post on imgur.com


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

namespace CodeFirst.Models
{ public class ContextoBiblioteca : DbContext
{
public ContextoBiblioteca() : base(“cadenabiblioteca”)
{
}

public DbSet Generos { get; set; }
public DbSet Libros { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
}
}
}
Bien, continuemos. Vamos a crear otra clase, también en models, a la que llamaremos ConstructorBiblioteca. Esta clase creara los objetos que incluiremos en la base de datos y los enviara al contexto.

View post on imgur.com

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace CodeFirst.Models
{
public class ConstructorBiblioteca : System.Data.Entity.DropCreateDatabaseIfModelChanges
{
protected override void Seed(ContextoBiblioteca context)
{
var listageneros = new List
{
new Genero {IdGenero = 1, NombreGenero = “Novela” }
};
listageneros.ForEach(g => context.Generos.Add(g));
context.SaveChanges();

var listaLibros = new List {
new Libro {IdGenero=1,IdLibro=1,Autor=”Alguien”,NombreLibro=”El Librillo”, Sinopsis = “BLABLABLA” }
};
listaLibros.ForEach(l => context.Libros.Add(l));
context.SaveChanges();
base.Seed(context);
}
}
}

Con listageneros.ForEach(g => context.Generos.Add(g)); hacemos un bucle que recorre listageneros y va añadiendo los objetos al contexto, en este caso solo hay un objeto pero si creásemos mas el bucle se encargaría de copiarlos ahí.
Con context.SaveChanges(); guardamos los cambios que hemos hecho en el contexto, esta instruccion es critica ya que si no la ponemos no se alterara el context.

Ahora iremos a Web.Config y actualizaremos nuestra cadena de conexión.

View post on imgur.com

add => controler. Seleccionamos MVC5 Controller with views, using EntityFramework y el solo se encargara de crear toda la lógica del controlador y las vistas.

View post on imgur.com

View post on imgur.com

Por ultimo añadiremos un ActionLink en Views/Shared/_Layout para poder acceder a nuestra nueva zona que nos habrá creado EntityFramework.

View post on imgur.com

Hecho esto podemos toquetear en las funciones que habrá creado EntityFramework como crear, modificar, etc. Todas estas acciones alteraran la base de datos que hemos creado automáticamente siguiendo este tutorial.

Muchas gracias y a practicar! =)