|
Este artigo requer a leitura do artigo Populando DataGrid usando Linq to Sql em Silverlight Parte I. Neste apenas foi preparado o ambiente, onde criamos o mapeamento relacional usando a classe LINQ To SQL
e a criação de uma stored procedure. Para trabalhar com banco de dados em Silverlight é necessário usar algum tipo de serviço para acesso ao banco de dados. Sendo assim, neste exemplo, será usado o serviço WCF. Abra a aplicação App_DataGrid e na Solution Explorer selecione a "App_DataGrid.Web" e adicione um novo item do tipo Silverlight-enabled WCF Service e coloque o nome como "ServiceContato.svc”, conforme mostrado na Figura 01.

Figura 01 - Adicionando WCF Service na aplicação
O próximo passo é realizar uma busca no banco de dados utilizando a classe ContatoClassesDataContext criada no momento que adicionamos a classe LINQ To SQL. Você pode verificar o nome selecionando o arquivo ContatoClasses.dbml e abrir o painel properties. Abra o arquivo ServiceContato.svc.cs, e adicione as namespaces e a implementação do método, conforme a Listagem 01.
|
using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Collections.Generic;
namespace App_DataGrid.Web
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ServiceContato
{
[OperationContract]
List<ListaContatoResult> ListaContato(string nome)
{
ContatoClassesDataContext db = new ContatoClassesDataContext();
var result = from b in db.ListaContato(nome)
select b;
return result.ToList();
}
}
}
|
Listagem 01 – Busca em banco de dados
Agora abra o arquivo Web.Config, e encontre a linha conforme mostrado na Listagem 02.
|
<service name="App_DataGrid.Web.ServiceContato">
<endpoint address="" binding="customBinding" bindingConfiguration="App_DataGrid.Web.ServiceContato.customBinding0"
contract="App_DataGrid.Web.ServiceContato" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
|
Listagem 02 – Configuração do Web.config
Modifique o atributo binding do endpoint para basicHttpBinding. A configuração deverá ficar conforme demonstrado na Listagem 03.
|
<service name="App_DataGrid.Web.ServiceContato">
<endpoint address="" binding="basicHttpBinding" contract="App_DataGrid.Web.ServiceContato" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
|
Listagem 03 – Modificação no Web.Config
Agora simplesmente execute sua aplicação e apenas feche o Browser.
No projeto Silverlight referencie o WCF. Para isso, em references com o botão direito-> Add Service Reference irá ser apresentada uma caixa de diálogo conforme Figura 02.

Figura 02 - Referenciando WCF no projeto Silverlight
Pressione o combobox Discover, selecione Services in Solution. Feito isso, irá aparecer em Services, o ServiceContato.svc. Em Namespace coloque o nome de “Servico", e pressione OK. Agora vá a MainPage.Xaml, e crie uma Interface com os controles conforme descrito na Listagem 04 e com a Interface similar à mostrada na Figura 03.
|
Controle
|
Content
|
Name
|
|
Button
|
Procurar
|
btnProcurar
|
|
TextBox
|
“”
|
txtProcurar
|
|
DataGrid
|
“” Não existe
|
gdGrid
|
Listagem 04 – Controles para design da Interface

Figura 03 – Interface da aplicação
Em Page.Xaml.cs, adicione o código, conforme a Listagem 05
|
namespace App_DataGrid
{
public partial class MainPage : UserControl
{
Servico.ServiceContatoClient oServico = new Servico.ServiceContatoClient();
public MainPage()
{
InitializeComponent();
btnProcurar.Click += new RoutedEventHandler(btnProcurar_Click);
}
void btnProcurar_Click(object sender, RoutedEventArgs e)
{
oServico.ListaContatoCompleted += new EventHandler<Servico.ListaContatoCompletedEventArgs>(oServico_ListaContatoCompleted);
btnProcurar.Click += new RoutedEventHandler(btnProcurar_Click);
oServico.ListaContatoAsync(txtProcurar.Text);
}
void oServico_ListaContatoCompleted(object sender, Servico.ListaContatoCompletedEventArgs e)
{
dtGrid.ItemsSource = e.Result;
}
}
}
|
Listagem 05- Código em C#
Observação: Eu inseri alguns dados na tabela TbContatos
Execute a aplicação.
Obrigada.
|