Utilizando LINQ Mapping Con WCF En Visual Studio 2010 (ASP.NET C#) Parte 2
Enviado por achavesm302 • 15 de Noviembre de 2013 • 1.130 Palabras (5 Páginas) • 560 Visitas
Utilizando LINQ Mapping con WCF en Visual Studio 2010 (ASP.NET C#) Parte 2
Requerimientos:
• Visual Studio 2010
• SQL Server 2008 o SQL Server 2008 R2
Continuando con el artículo técnico anterior http://mredison.files.wordpress.com/2010/08/utilizando-linq-con-wcf.pdf
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:
Implemente los métodos agregados dentro de la clase:
Primer método AgregarCliente(string nombre, string localizacion)
public void AgregarCliente(string nombre, string localizacion)
{
Cliente nuevoCliente
= new Cliente { Nombre = nombre, Localizacion = localizacion };
bd.Clientes.InsertOnSubmit(nuevoCliente);
bd.SubmitChanges();
}
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.
Segundo método ActualizarCliente(int id, string nombre, string localizacion)
public void ActualizarCliente(int id, string nombre, string localizacion)
{
Cliente cliente = bd.Clientes.Single(c => c.ID == id);
cliente.Nombre = nombre; cliente.Localizacion = localizacion; bd.SubmitChanges();
}
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.
Tercer método EliminarCliente( int id)
public void EliminarCliente(int id)
{
Cliente cliente = bd.Clientes.Single(c => c.ID == id); bd.Clientes.DeleteOnSubmit(cliente); bd.SubmitChanges();
}
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().
El código completo de la clase que implementa la interfaz es el siguiente:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
namespace WCFLinq
{
public class Servicio : IMetodos
{
Empresa bd = new Empresa();
public List<Cliente> ObtenerClientes()
{
var consulta = from cl in bd.Clientes select cl;
return consulta.ToList();
}
public List<Cliente> ObtenerClientesPorLocalizacion(string localizacion)
{
var consulta = from cl in bd.Clientes
where cl.Localizacion.Contains(localizacion)
select cl;
return consulta.ToList();
}
public void AgregarCliente(string nombre, string localizacion)
{
Cliente nuevoCliente
= new Cliente { Nombre = nombre, Localizacion = localizacion };
bd.Clientes.InsertOnSubmit(nuevoCliente);
bd.SubmitChanges();
}
public void ActualizarCliente(int id, string nombre, string localizacion)
{
Cliente cliente = bd.Clientes.Single(c => c.ID == id);
cliente.Nombre = nombre; cliente.Localizacion = localizacion; bd.SubmitChanges();
}
public void EliminarCliente(int id)
{
Cliente cliente = bd.Clientes.Single(c => c.ID == id); bd.Clientes.DeleteOnSubmit(cliente); bd.SubmitChanges();
}
}
}
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:
Agregue controles web, textbox y botón para proceder a agregar un cliente.
Paso 5:
De doble clic al botón btnAgregar.
protected void btnAgregar_Click(object sender, EventArgs e)
{
try
{
}
if (txtNombre.Text != String.Empty
&& txtLocalizacion.Text != String.Empty)
proxy.AgregarCliente(txtNombre.Text, txtLocalizacion.Text);
catch (LinqDataSourceValidationException ex)
{
Response.Write(ex.Message.ToString());
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
finally
{
txtNombre.Text = "";
txtLocalizacion.Text = "";
gvClientes.DataSource = proxy.ObtenerClientes();
gvClientes.DataBind();
}
}
Paso 6:
Compile y ejecute la aplicación realice una prueba.
Prueba exitosa.
Paso 7:
Coloque
...