Está en la página 1de 16

MCV3 Entity Framework y Procedimientos Almacenado

3 comentariosPublicado por manguher en 27 junio, 2012


Kiu , soy Manu, vivo en chile , Concepcin especificamente , pero ahora estoy en Santiago trabajando
y aprendiendo algunos cosas, las cuales quiero ir compartiendo en este espacio.
Bueno , Al grano .
Para empezar generamos nuestro modelo desde Sql Server Managment Estudio (express obviamente), a
continuacion muestro un pequeo modelo de dos tablas , a modo de ejemplo para este post.

Como el ttulo de esta entrada hace mensin a que trabajaremos con SP (Store Procedure), ahora
mostrar como crear un nuevo SP desde SQL Managment para posteriormente utilizarlo en nuestro web.
Vamos a nuestra base de datos a la carpeta Programacin , click derecho y le damos a Nuevo procedimiento
almacenado .

Nos generar un codigo automtico , pero lo ms importante son las sentencias que marqu en Rojo. Como es
un ejemplo bsico, el SP solo ir a buscar un listado de los usuarios. Y con esto ya tenemos lo ms
importante.

Ok , ahora ya tenemos un modelo de prueba
Para crear nuestro proyecto web con MVC3 y EF, deben crear un nuevo proyecto en VS (en mi casao VS2010
que lo consegui en el trabajo), Luego seleccionar proyecto Web-> MVC3. En este caso usaremos c# para
comunicarnos con EF (Entity Framework)

Ahora seleccionamos un proyecto web vacio y que utilize el view engine Razor, el cual nos ser de gran
utilidad al momento de trabajar con asp.NET , HTML y C#.

Le damos a OK y asi obtendremos nuestro proyecto con MVC3 listo para empezar.
El siguiente paso es incluir un modelo de datos a nuestro proyecto web, para eso agregamos un Nuevo
elementodel tipo Datos, en este caso usaremos ADO.NET Entity Data Model. Despus elegir contenido
del modelo, que debe ser : Generar desde la BD

Le damos a Siguiente , seleccionamos nuestra base de datos y los SP que tengamos agregados.

con esto ya tenemos incluido el modelo a nuestro proyecto , ahora debemos Importar la funciones o SP

Le damos un nombre al SP, lo seleccionamos y le indicamos el tipo de la Coleccin que devuelve el SP.

ahora ya tenemos vinculado todos los elementos de nuestro modelo con VS.

Nos queda poco, solo tenemos que generar la base de datos desde nuestro modelo.edmx.

A continuacin le decimos a VS que mapee nustro modelo y genere los archivos .TT para trabajar con EF el
acceso a las clases Entidades POCO generadas por ADO.NET POCO Entity Generator. Para esto, desde
el modelo que entrega VS , hacemos Click derecho y seleccionamos agregar elemento de generacin de
cdigo.

Se nos agregarn dos archivos al proyecto , uno es Modelo.Context.tt , el cual nos genera el contexto para
manipular nuestra Base de datos a un nivel mas Abastracto. Tambien se nos agregar Model.tt que son las
clases que conforman nuestro modelo de datos.

Bueno ahora que ya tenemos todo listo, vamos a Agregar un controlador , un modelo y una vista para usar
nuestro pequeo procedimiento almacenado.
Agregamos una clase en el directorio Model para preparar la conexion con el Contexto. Para eso he creado
una clase ModelUsuario.cs la cual contiene un constructor que genera una instancia de conexin con mi
base de datos. Adems un mtodo que llame nuestro procedimiento almacenado (GetUsuarios) y nos retorne
nuestro preciado Listado de usuarios.

Ahora el Controlador
Primero importamos nuestro directorio Models para poder acceder a las clases que se encuentran ah. luego
en nuestra accin, creamos un objeto de la clase UsuarioModel para llamar al mtodo que usa nuestro SP.

La vista
La creamos fuertemente tipada a la clase usuarios la cual fue generada por EF y adems le decimos que
genere una lista segn lo que le haya entregado mi accin desde el contralador.

y la vista quedaris asi

Cualquier comentario o sugerencia se agradece, saludos.
Vista dentro de otra vista con MVC3 , Razor y Jquery Ajax
Deja un comentarioPublicado por manguher en 4 julio, 2012
Para empezar los elementos principales son :
Modelo: En este caso consultaremos a un sp (store procedure ) para ir a buscar los datos de una tabla en
especifico.
Vista : Desde donde llamaremos y cargaremos a otra vista.
Controlador: Se comunica con el modelo y le entrega los datos necesarios a la vista.
Bien , como lo primero es el modelo , vamos al Modelo.

Este post esta relacionado al post anterior, por ende no explico el acceso a los datos, simplemente estamos
aplicando algunas cosas que puedan servir (desde el desarrollo web , claro esta).
Controlador.

El controlador posee una accin que se llama Detalles, esta accin lo nico que hace , es recibir un
parametro de entrada idUser e l cual se pasa desde la vista Index a la vista Detalles travs del objeto
$.ajax que nos proporciona Jquery. La vista Index se ve algo as.

el cdigo de esta vista es el siguiente.
@model IEnumerable<MVC3EF.usuarios>

@{
ViewBag.Title = "Index";
}
<script type="text/javascript">

$(document).ready(function () {

$(".detalle-user > a").click(function () {

event.preventDefault()
var userId = $(this).attr("id"); // obtengo el id del usuario
$.ajax({
type : "POST",
url : "@(Url.Action("Detalles", "Usuarios"))", // se dirige a la accin "Detalle" del controlado
traditional : true,
data : {idUser:userId}, // paso el parametro que necesita el controlador
success : function(data){
$("#cargaVista").html(data); // carga el cdigo html en el div "cargaVista", este cdigo es retornado por el
controlador.
}
});

})

})

</script>

<h2>Index</h2>

<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th></th>
<th>
us_id
</th>
<th>
us_nombre
</th>
<th>
us_pass
</th>
<th>
idTipoUser
</th>
</tr>

@foreach (var item in Model) {
<tr>
<td class="detalle-user">
<a id="@(item.us_id)" href="#">Detalles</a>
</td>
<td>
@item.us_id
</td>
<td>
@item.us_nombre
</td>
<td>
@item.us_pass
</td>
<td>
@item.idTipoUser
</td>
</tr>
}

</table>
<div id="cargaVista">
<!-- aqui se carga la vista "Detalles"-->
</div>

Para que carge la vista Detalle dentro de Index , hacemos click en el link Detalles , con esto activamos
el evento click y se realiza la carga en el div cargaVista, se veria de esta forma.

También podría gustarte