Utilizando-Linq-Con-Wcf-2 - Mredison PDF
Utilizando-Linq-Con-Wcf-2 - Mredison PDF
com
Paso 1:
Dentro del proyecto de tipo WCF, agregue los siguientes métodos a la interfaz.
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
namespace WCFLinq
{
[ServiceContract]
public interface IMetodos
{
[OperationContract]
List<Cliente> ObtenerClientes();
[OperationContract]
List<Cliente> ObtenerClientesPorLocalizacion(string localizacion);
[OperationContract]
void AgregarCliente(string nombre, string localizacion);
[OperationContract]
void ActualizarCliente(int id, string nombre, string localizacion);
[OperationContract]
void EliminarCliente(int id);
}
}
Paso 2:
Debe crear una nueva instancia de la clase Cliente, agregando los valores. Después llamar al
método InsertOnSubmit(entity class) para agregar el registro al contexto de datos
(DataContext) y por último al método SubmitChanges() para actualizarlo sobre la base de
datos.
Debe crear una condición de LINQ consultando al contexto de datos y con el método Single
(expresión) en el cual solo retornará de la colección de datos el elemento que cumpla con la
condición asignada anteriormente, en este caso se utiliza una expresión lambda.
Si desea profundizar en el tema de las expresiones lambda puede ver la referencia siguiente:
http://msdn.microsoft.com/es-es/library/bb397687.aspx
Una vez teniendo el elemento que cumple con la condición puede asignarlo a un objeto de
tipo Cliente, y actualizar sus propiedades. Por último se realizará una actualización en la base
de datos.
De la misma forma que el método anterior se buscará un elemento que cumpla con la
condición, se realizará la eliminación por medio del método DeleteOnSubmit(entity class) y
se actualizará sobre la base de datos con el método SubmitChanges().
Tecnologías Microsoft http://mredison.wordpress.com
namespace WCFLinq
{
public class Servicio : IMetodos
{
Empresa bd = new Empresa();
Paso 3:
Compile y vaya al proyecto Web, de clic derecho a la referencia del servicio web y después en
Actualizar Referencia de Servicio (Update Service Reference).
Paso 4:
Paso 5:
Paso 6:
Prueba exitosa.
Paso 7:
Paso 8:
Seleccione el control GridView y vaya a sus propiedades, después a los eventos y de doble clic
al evento RowDeleting.
Tecnologías Microsoft http://mredison.wordpress.com
Paso 9:
Dentro del método RowDeleting, se necesita buscar el valor del cliente ID, y saber que índice
de fila se requiere eliminar, para obtener ese valor y eliminarlo se agrega el siguiente código:
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
finally
{
gvClientes.DataSource = proxy.ObtenerClientes();
gvClientes.DataBind();
}
}
Paso 10:
Paso 11:
Ahora agregará la opción de Editar dentro del GridView, para esto se debe utilizar columnas
de tipo TemplateField, el cual le da la opción de tener plantillas de visualización y edición de
datos, además de utilizar la función Bind() que le brinda la posibilidad de escritura sobre los
datos.
Si desea profundizar en el tema de las Expresiones de Datos Bind() y Eval() puede consultar la
referencia siguiente:
http://msdn.microsoft.com/en-us/library/ms178366.aspx
Paso 12:
Paso 13:
Paso 14:
Método RowUpdating()
try
{
if(nombre.Text!=String.Empty && localizacion.Text!=String.Empty)
proxy.ActualizarCliente(id, nombre.Text, localizacion.Text);
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
finally
{
gvClientes.EditIndex = -1;
gvClientes.DataSource = proxy.ObtenerClientes();
gvClientes.DataBind();
}
Dentro de este método identificará los valores de los controles por medio del método
FindControl(ControlID) de acuerdo a la fila seleccionada e.RowIndex.
Paso 15:
Paso 16:
Código Completo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
ddLocalizacion.DataSource = consulta.ToList();
ddLocalizacion.DataBind();
}
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
finally
{
Actualizar();
}
}
protected void gvClientes_RowEditing(object sender, GridViewEditEventArgs e)
{
gvClientes.EditIndex = e.NewEditIndex;
Actualizar();
}
protected void gvClientes_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gvClientes.EditIndex = -1;
Actualizar();
}
protected void gvClientes_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int id = Convert.ToInt32(gvClientes.Rows[e.RowIndex].Cells[0].Text);
TextBox nombre = (TextBox)(gvClientes.Rows[e.RowIndex].FindControl("txtEditarNombre") as
TextBox);
TextBox localizacion = (TextBox)(gvClientes.Rows[e.RowIndex].FindControl("txtEditarLoc") as
TextBox);
try
{
if(nombre.Text!=String.Empty && localizacion.Text!=String.Empty)
proxy.ActualizarCliente(id, nombre.Text, localizacion.Text);
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
finally
{
gvClientes.EditIndex = -1;
Actualizar();
}
}
}
Este documento ha sido elaborado por Edison Daniel García Chiñas para el blog de
Tecnologías Microsoft para distribución gratuita. http://mredison.wordpress.com