Thursday 11 February 2010

Hoje ganhei a minha primeira batalha com a ADO Entity Framework!

No CMS que estou a desenvolver - Olimpo CMS - sempre tive como requisito principal a modulidade. Assim sendo, cada módulo, para além de ser responsável pelas suas acções, é também responsável pelas suas tabelas e seus dados. Não faz sentido o módulo de criação dos menus ter acesso as tabelas com os componentes de cada página e vice-versa.

Sendo assim, faz todo o sentido que a ConnectionString seja partilhada por todos os módulos, ou pelo menos que esteja em local partilhado, já que cada módulo pode obter os seus dados do repositório de dados que entender.

Vamos imaginar que está tudo na mesma base de dados, colocamos a ConnectionString no Web.Config do WebSite tudo iria correr bem! Não poderíamos estar mais errados. Com a Entity FrameWork, temos que agora o conceito de MetaData que é onde está descrito os objectos criados e os seus mapeamentos. Sem a MetaData não é possível usar o ADO Entity FrameWork neste exemplo modular, pois, cada módulo necessita, adicionar ao Web.Config a sua ConnectionStrings e a sua MetaData.

O que fiz para resolver este assunto? Simples, no Web.Config coloco a  ConnectionString sem a informação de MetaData e adiciono essa informação em cada módulo quando invoco o objecto EntityModel respectivo, assim:

EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
            entityBuilder.Provider = "System.Data.SqlClient";
            entityBuilder.ProviderConnectionString = @"Server=LENOVO-PAP\SQLEXPRESS;Initial Catalog=TEST.NET;Integrated Security=True;MultipleActiveResultSets=True";
            entityBuilder.Metadata = @"res://*/NewModel.csdl|res://*/NewModel.ssdl|res://*/NewModel.msl";

Agora, basta invocar o objecto ADO.NET Entity gerado com a nova connection string.
            Entities model = new Entities(new EntityConnection(entityBuilder.ToString()));
            var lstRET = model.AAA_User.ToList();

Desta forma é possível com uma ConnectionString associar a qualquer objecto ADO.NET Entity sem termos que ter várias ConnectionStrings no Web.Config.

NOTA: Neste exemplo a ConnectionString está hardcoded, mas, no projecto final é para obtermos a partir do Web.Config.


Paulo Aboim Pinto

Wednesday 10 February 2010

Buzz, o novo Google Wave.

Hoje a internet acordou com a notícia da entrada do Google nas redes sociais com o Google Buzz. Logo que abri o meu GMail (como faço todos os dias de manhã) tinha a mensagem a dizer que podia aderir ao Google Buzz e  foi o que fiz.

Devo dizer que gostei. Tem algumas funcionalidades interessantes que não conseguimos ter com o Twitter, mas, que o FaceBook já tinha implementado. Por exemplo, ao responder a uma mensagem de um amigo, ela fica em jeito de Reply invés de ser uma nova mensagem. Isso é chato no Twitter, pois, manter uma conversa com alguém pode ser muito xato.

Outra coisa que gostei foi do retirar da limitação dos 140 caractares. É verdade que isso é que fez com o que Twitter seja o que é hoje, mas é uma limitação xata para não dizer mesmo sem sentido.

Em conversa com uma amiga minha (ainda de manhã) demos por nós a falar sobre a estratégia do Google em relação ao Google Wave. Devo dizer que sou fã das Waves e ainda uso frequentemente em reuniões, para fazer algum BrainStorming e para tirar notas. Posso dizer que o Google Wave é o meu Notepad online. O que mais gosto ainda é a possoibilidade de poder partilhar essas minhas notas com outras pessoas.
Claro que estou aborrecido com o facto de ainda não poder enviar mensagens para fora do Google Wave, por exemplo, transformar uma Wave numa mensagem de correio electrónico e enviar para alguém e ainda ao receber a resposta dessa pessoa, poder arquivar na Wave.

Devido a esta pequena (grande) limitação do Google Wave, as pessoas não aderiram tanto a este serviço, assim, perdeu-se o impto inícial à volta das Waves. Eis que a Google aparece com este add-on ao GMail que é o Buzz. Se olharmos bem, a ideia de enviarmos mensagens a outros pessoas e poder responder em forma de árvore é muito parecido ao estilo do Google Wave. Até quando alguém nos responde e temos o Buzz aberto a forma como a resposta aparece é muito ao estilo do Google Wave.

Não será o Buzz uma forma de aproximação das pessoas ao Google Wave?

Vamos ficar à espera do que a Google irá fazer a seguir.


Abraços
Paulo Aboim Pinto