Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Olá pessoal, tudo certo?
Depois de alguns testes com o novo CTP de Julho do .NET RIA Services e a versão final do Silverlight 3.0, notei algumas mudanças e comentários aqui são necessários.
Nesses posts abaixo, você tinha alguns exemplos com o .NET RIA Services CTP de Maio 2009 e Silverlight 3.0 ainda Beta, lembra deles?
Mais recursos do .NET RIA Services CTP Maio 2009
Ref.: https://blogs.msdn.com/wcamb/archive/2009/06/26/mais-recursos-do-net-ria-services-ctp-maio-2009.aspx
HelloWorld com o .NET RIA Services
Ref.: https://blogs.msdn.com/wcamb/archive/2009/06/24/helloworld-com-o-net-ria-services.aspx
As dlls a seguir foram mantidas no SDK do Silverlight:
- System.Windows.Controls.dll
- System.Windows.Controls.Data.dll
- System.Windows.Ria.Controls.dll
Porém, a System.Windows.Controls.Data.DataForm.dll, que era usada para a adição de controles dataControls (como o DataPager) foi movida do Silverlight SDK para o Silverlight Toolkit.
Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1
Ref.: https://www.microsoft.com/downloads/details.aspx?familyid=9442b0f2-7465-417a-88f3-5e7b5409e9dd&displaylang=en
Silverlight Toolkit - July 2009
Ref.: https://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24246
Se você não havia encontrado o Data.DataForm a partir da versão final do SL3, essa era a razão. Uma lista completa de quebras e mudanças do SL2 para o SL3 é encontrada no link abaixo:
Ensuring That Your Silverlight 2 Applications Work with Silverlight 3
Ref.: https://msdn.microsoft.com/en-us/library/cc645049(VS.95).aspx
O .NET RIA Services também mudou e a partir da documentação, o primeiro exemplo é dado usando o Entity Framework para a geração do DomainContext, exportando as entidades mapeadas para o cliente Ria.
Algumas pessoas também me perguntaram sobre o DomainContext gerado pela classe proxy no lado cliente. Quando tentaram fazer o binding dos dados no controle DataGrid, por exemplo, tiveram dificuldade para encontrar o DomainContext ou mesmo fazer a associação do DataSource no controle.
Para isso, vale destacar a localização do DomainContext. Sempre que a documentação citá-lo, ele está criado no arquivo da pasta Generetad_Code, por exemplo, o arquivo “SilverlightApplication1.Web.g.cs”. Veja a figura abaixo, onde destaco o DomainContext criado:
O nome é que não ajuda :( quando você criar a classe DomainService, ela empresta o nome para o DomainContext no proxy cliente. Isso pode gerar a confusão!
A partir desse DomainContext, que no meu exemplo foi gerado a partir do EDMX do Entity Framework no lado servidor, podemos usar o seguinte mapa para binding de dados.
Arquivo no lado do cliente: MainPage.xaml
1: <UserControl x:Class="SilverlightApplication1.MainPage"
2: xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
3: xmlns:dataControls="clr-namespace:System.Windows.Controls.Data;assembly=System.Windows.Controls.Data.DataForm"
4: xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
5: xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
6: xmlns:d="https://schemas.microsoft.com/expression/blend/2008"
7: xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006"
8: mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
9: <Grid x:Name="LayoutRoot">
10: <data:DataGrid Name="TheDataGrid"></data:DataGrid>
11: </Grid>
12: </UserControl>
Arquivo no lado do cliente: MainPage.xaml.cs
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Net;
5: using System.Windows;
6: using System.Windows.Controls;
7: using System.Windows.Documents;
8: using System.Windows.Input;
9: using System.Windows.Media;
10: using System.Windows.Media.Animation;
11: using System.Windows.Shapes;
12:
13: // Adicionar novos namespaces
14: using SilverlightApplication1.Web;
15: using System.Windows.Ria.Data;
16:
17: namespace SilverlightApplication1
18: {
19: public partial class MainPage : UserControl
20: {
21: // Adicionar o contexto do DomainServices1
22: private DomainService1 _ctxt = new DomainService1();
23:
24: public MainPage()
25: {
26: InitializeComponent();
27:
28: // Carregar as entidades deseajdas.
29: LoadOperation<Contacts> loadOp = this._ctxt.Load(this._ctxt.GetContactsQuery());
30:
31: this.TheDataGrid.ItemsSource = loadOp.Entities;
32: }
33: }
34: }
No código acima, note o trecho onde fazemos o binding para o DataGrid colocado na página .XAML, veja:
O que eu fiz foi carregar os dados da entidade Contacts, que foi exportada pelo contexto, a partir do EDMX gerado para meu banco de dados. Para isso, usei o método GetContactsQuery() do contexto gerado. Para as outras entidades, também tenho os métodos de consulta, como GetAccountsQuery(), GetBusinessCustomersQuery(), GetCustomersQuery(), etc.
Recomendo a leitura e testes sobre os exemplos com o novo .NET RIA Services CTP de Julho. Ele parece mais simples e aos poucos, esse framework vai ganhando os contornos de uma boa solução para o middle tier de uma solução RIA.
Microsoft .NET RIA Services July 2009 Preview
https://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce&displaylang=en#filelist
Por enquanto é só! Até o próximo post :)
Waldemir.