Estou escrevendo um artigo para a .Net Magazine e resolvi usar em um dos exemplos a persistência "pré-fabricada" do LINQ to SQL. Até aí tudo bem, mas qual não foi minha surpresa ao perceber que não há muito suporte de LINQ to SQL para programação multi-camadas. Já repararam que todos os exemplos que vemos com LINQ to SQL estão usando sempre 2 camadas (apresentação e banco de dados)?

Descobri que algumas pessoas já estão reclamando disso a algum tempo. Alguns artigos que li sugerem o uso de uma camada adicional de abstração, algo sugerido pelo próprio Scott Guthrie da Microsoft em seu blog, onde ele também comenta que vai fazer um post sobre n-camadas e LINQ to SQL, que até agora eu não vi (ele comenta novamente, dessa vez no próprio post, aqui).

Isso tudo é muito estranho. Uma das coisas que senti falta foi a possibilidade de separar as entidades de negócio do código de acesso a dados, algo que o Visual Studio 2008 já oferece para os Datasets tipados:

DatasetEmOutroProjetoVS2008  

Porque não oferecer o mesmo suporte ao LINQ to SQL? Procurei bastante, mas não encontrei nada parecido no Designer:

LINQToSQLSemOutroProjetoVS2008 

Outro problema encontrado foi a utilização de um objeto modificado com outra instância de datacontext. Tudo indica que não funciona...

Vou procurar um pouco mais e ver no que dá. Se encontrar solução coloco por aqui.


Postado na(s) categoria(s) LINQ pelo Giovanni Bassi em 22 de março de 2008 às 23:33 | Tags: , , ,

Comentários


Brazil Michel Magalhães
setembro 22. 2008 11:13
Michel Magalhães
Rapaz, ele realmente não atualiza um outro objeto que foi modificado por outro datacontext, o que dificulta o desenvolvimento em camadas.

Uma maneira de fazer isto, é adicionando um campo nas tabelas do tipo "timestamp", configurar a propriedade na entidade e em seguida utilizar o método "Atach(Entity,true)", porém, se seu objeto não foi modificado ele fará o update da mesma forma. Frown

Tentei também utilizar o evento "PropertyChanged", com o intuito de verificar se o objeto foi modificado para então chamar o Atach,mas também não funcionou.

Outra alternativa é fazer via reflection, percorrer as propriedades e setar as atualizações.

Pelo que estou entendendo o DataContext está funcionando também como uma espécie de "Observador" onde ele é informado das modificações que acontecem nas entidades que ele "esta de olho" (Observado).

Bom, eu também estou a procura, se tiverem alguma solução.....












no site


Brazil Elizeu
outubro 28. 2008 21:09
Elizeu
Giggio, antes de mais nada quero parabeniza-lo pelo conteudo no site.
Com relacao ao Linq to Sql realmente o material é escasso, estou desenvolvendo um projeto utilizando ASP.NET MVC, e para a persistencia estou tentando utilizar o Linq to SQL, porem ainda nao obtive sucesso.
Uma deixa aí é abordar mais sobre Persistencia de Dados.
Abraço.....  

no site


Brazil Tarcisio
outubro 30. 2008 19:08
Tarcisio
Qual é a edição da Revista que saiu este artigo ?

no site


outubro 31. 2008 19:45
Giovanni Bassi
Pessoal, acabou não entrando no artigo. Em breve vai sair um artigo meu detalhando bem o uso do MVC em uma arquitetura do mundo real na .Net Magazine, aguardem!

http://unplugged.giggio.net/http://unplugged.giggio.net/


Brazil Marcos
novembro 18. 2008 08:52
Marcos
Existe previsão de quando irá sair o artigo?

no site


novembro 18. 2008 13:12
Giovanni Bassi
Marcos, provavelmente no fim do ano, ou começo de janeiro.

http://unplugged.giggio.net/http://unplugged.giggio.net/


Brazil alessandro
janeiro 14. 2009 12:54
alessandro
Pessoal,
achei este link: iridescence.no/.../...-the-Repository-Pattern.aspx

Parece dar uma luz.

De qualquer forma, uma alternativa que achei foi na camada de persistência fazer um clone da entidade do LINQ e gravar e atualizar ela com base na entidade passada como parametro. É estranho, mais foi o jeito mais simples que encontrei.

t+

no site


julho 23. 2009 12:11
Andy Warhol
Hey I love your style I will subscribe for your feed please keep posting!

http://discountgenuinewatches.biz/http://discountgenuinewatches.biz/


agosto 15. 2009 06:25
Colibri Pocket Watch Hunting
Very interesting topic will bookmark your site to check if you write more about in the future.

http://theluxurywatchstore.biz/colibri/colibri-pocket-watch-hunting-case-moon-phase-day-date-dial-goldtone-wooden-box-pws095887x/http://theluxurywatchstore.biz/colibri/colibri-pocket-watch-hunting-case-moon-phase-day-date-dial-goldtone-wooden-box-pws095887x/


agosto 17. 2009 03:44
Police Pl10977ms02a
Do you earn decent money from this blog or are you doing it just for fun?

http://theswisswatch.biz/police/police-pl10977ms02a/http://theswisswatch.biz/police/police-pl10977ms02a/

Comentar


(Vai mostrar seu Gravatar)

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading



Quem é Giovanni Bassi

Giovanni Bassi Sou uma pessoa apaixonada por tecnologia e especificamente por .Net. Sou consultor independente especialista em .Net, focado em arquitetura e melhores práticas. Tenho dezenas de artigos publicados na .Net Magazine, revista da qual sou editor técnico. Ministro palestras e cursos de vez em quando, e quando dá tempo eu respiro um pouco. Mais detalhes nesta página.

Busca

Selos

MVP

MCPD

MCSD

.Net Magazine

Abaixo ao if!

Calendário

«  fevereiro 2010  »
seteququsedo
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567
Ver detalhamento de posts no calendário

Blogs interessantes

    OPMLDownload OPML file

    Postagens recentes

    Comentários recentes

    Disclaimer / Aviso
    As opiniões colocadas neste blog são minhas e pessoais e não expressam necessariamente as opiniões de meus empregadores, pareceiros e amigos. Da mesma forma, os comentários feitos por leitores do blog não expressam a minha opinião.

    © Copyright 2010 .Net Unplugged
    Log in