1. 3capas
1. Aplicación web vacia
2. Añadir a la solución proyecto nuevo: biblioteca de clases
3. Incluir en la biblioteca el modelo que incluya la base de datos
4. Cambiar de plurar a singular los nombres de todas las tablas.
5. Crear en la biblioteca clases parciales de las tablas. Se llamaran igual y se definirán
como public partial class
6. Definir el contexto como static …
7. Para crear una lista de cosas:
8. static LibreriaMVCEntities db = new LibreriaMVCEntities();
9. static public List<Libro> ListarLibros()
10. {
11. var lista = from a in db.Libros
12. select a;
13.
14. return (lista.ToList());
15.
16. }
8. Generamos la solución.
9. Nos pasamos a la aplicación
10. Añadimos las dos referencias:
Proyectos:
.com system.data.entity.
11. Modificamos el webconfig de la aplicación web:
Añadimos la cadena de conexión que tenemos en AppConfig y la copiamos en el
webconfig de la aplicación web, dentro del configuration pero fuera del system web.
12. Agregamos carpeta aspnet tema donde iran los Fonts y css.
13. Y en el webconfig añadiremos el tema dentro del system web
<pages theme="Tema1"></pages>
14. Generamos los aspx, comenzamos por la pagina maestra, el contenido fuera del
ContentPlaceHolder
15. generar aspx que utilizan pagina maestra
2. 16. doble click en los elementos para generar sus eventos.
17. Para cada aspx.cs hay que añadir el using con el nombre de la biblioteca de clases.
Comentario.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassLibrary1
{
public partial class Comentario
{
// definimos contexto
static LibreriaMVCEntities db = new LibreriaMVCEntities();
static public List<Comentario> ListarComentarios()
{
var lista = from a in db.Comentarios
select a;
return (lista.ToList());
}
static public void AnadirComentario(string usu, string texto)
{
Comentario comentario = new Comentario();
comentario.Usuario = usu;
comentario.TextoComentario = texto;
comentario.FechaComentario = DateTime.Now;
db.Comentarios.AddObject(comentario);
db.SaveChanges();
}
static public void EliminarComentario(int id)
{
var lista = from a in db.Comentarios
where a.IdComentario == id
select a;
Comentario comentario = lista.FirstOrDefault();
db.Comentarios.DeleteObject(comentario);
db.SaveChanges();
}
}
}
3. Comentario.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ClassLibrary1;
namespace WebApplication1
{
public partial class Comentarios : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<Comentario> comentario = Comentario.ListarComentarios();
GridComentarios.DataSource = comentario;
GridComentarios.DataBind();
}
protected void btnPublicar_Click(object sender, EventArgs e)
{
Comentario.AnadirComentario(txtNombre.Text, txtTexto.Text);
List<Comentario> comentario = Comentario.ListarComentarios();
GridComentarios.DataSource = comentario;
GridComentarios.DataBind();
}
protected void btnEliminar_Click(object sender, EventArgs e)
{
Comentario.EliminarComentario(Convert.ToInt32(txtEliminar.Text));
List<Comentario> comentario = Comentario.ListarComentarios();
GridComentarios.DataSource = comentario;
GridComentarios.DataBind();
}
}
}
Libro.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassLibrary1
{
public partial class Libro
{
// definimos contexto
static LibreriaMVCEntities db = new LibreriaMVCEntities();
static public List<Libro> ListarLibros()
{
var lista = from a in db.Libros
4. select a;
return (lista.ToList());
}
static public Libro LibroPorId(int id)
{
var lista = from a in db.Libros
where a.IdLibro == id
select a;
return (lista).FirstOrDefault();
}
static public List<Libro> ListarPorTitulo(string titulo)
{
var lista = from a in db.Libros
where a.Titulo.Contains(titulo)
select a;
return (lista.ToList());
}
static public List<Libro> ListarPorPrecio(decimal precio)
{
var lista = from a in db.Libros
where a.Precio < precio
select a;
return (lista.ToList());
}
static public List<Libro> ListarPorCategoria(int categoria)
{
var lista = from a in db.Libros
where a.IdCategoria == categoria
select a;
return (lista.ToList());
}
}
}
Libro.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ClassLibrary1;
namespace WebApplication1
5. {
public partial class Libros : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
LibreriaMVCEntities db = new LibreriaMVCEntities();
var lista = from a in db.Categorias
select new
{
id = a.IdCategoria,
nombre = a.Descripcion
};
ddlCategoria.DataSource = lista;
ddlCategoria.DataTextField = "nombre";
ddlCategoria.DataValueField = "id";
ddlCategoria.DataBind();
}
protected void btnLibros_Click(object sender, EventArgs e)
{
List<Libro> listalibros = Libro.ListarLibros();
Grid.DataSource = listalibros;
Grid.DataBind();
}
protected void btnTitulo_Click(object sender, EventArgs e)
{
if (txtTitulo.Text.Trim() != "")
{
List<Libro> listalibros = Libro.ListarPorTitulo(txtTitulo.Text);
Grid.DataSource = listalibros;
Grid.DataBind();
}
}
protected void btnPrecio_Click(object sender, EventArgs e)
{
decimal precio;
if ((txtPrecio.Text.Trim() != "") &&
(decimal.TryParse(txtPrecio.Text, out precio)))
{
List<Libro> listalibros =
Libro.ListarPorPrecio(Convert.ToDecimal(txtPrecio.Text));
Grid.DataSource = listalibros;
Grid.DataBind();
}
}
protected void btnCategoria_Click(object sender, EventArgs e)
{
List<Libro> listalibros =
Libro.ListarPorCategoria(Convert.ToInt32(ddlCategoria.SelectedValue));