BT
x A sua opinião é importante! Por favor preencha a pesquisa do InfoQ sobre os seus hábitos de leitura!

Mudanças no LINQ to SQL no .NET 4.0

por Jonathan Allen , traduzido por Carlos Mendonça em 13 Jul 2009 |

O Damien Guard, do gurpo Data Programmability da Microsoft postou uma longa lista de mudanças no LINQ to SQL. Apesar de eles ainda estarem compromissados com o Entity Framework no longo prazo, isso vai aliviar o medo de que o LINQ to SQL será totalmente negligenciado no meio tempo.

Performance
  • Planos de execução de query são mais freqüentemente reusados ao se definir comprimentos dos parâmetros de texto
  • Busca em cache por chaves primárias com resultados únicos agora incluem query.Where(predicado).Single/SingleOrDefault/First/FirstOrDefault
  • Redução da carga extra na execução da query quando DataLoadOptions está especificado (a busca em cache considera a equivalência do valor do DataLoadOptions – pós beta 1)
Usabilidade
  • Interface ITable para aumentar as possibilidades de mocks
  • Chamada do método Contains com enums automaticamente convertidos para int ou string dependendo do tipo da coluna
  • Associações agora podem especificar colunas sem chave primária do outro lado da associação para updates
  • Suporte à sintaxe de inicialização de listas para queries
  • LinqDataSource agora suporte entidades herdadas
  • Adicionado suporte no LinqDataSource para extensões de query DynamicData
Estabilidade das queries
  • Método Contains agora detecta IQueryable auto-referenciado e não causa stack overflow
  • Método Skip(0) não mais impede eager loading
  • Método GetCommand opera dentro de transações do SQL Compact
  • Expor o Link em uma propriedade ou variável é detectado e reportado corretamente
  • Queries compiladas agora detectam corretamente uma mudança no mapeamento e lançam uma exceção.
  • Métodos String.StartsWith, EndsWith e Contains agora lidam corretamente com o “~” (til) na string de busca
  • Agora se detecta multiple active result sets (MARS) melhor
  • Associações entre entidades são corretamente detectadas quando se usa eager loading com Table-Value Functions (TVFs)
  • Queries que contém sub-queries com projeções escalares funcionam melhor
Estabilidade do update
  • SubmitChanges não mais consome exceções de rollback de transações silenciosamente
  • SubmitChanges lida direito com timestamps em um cenário de conflito
  • IsDbGenerated agora respeita propriedades renomeadas que não combinam com o nome da sua coluna
  • Colunas geradas pelo servidor e triggers/replicações SQL agora funcionam ao invés de lançarem exceção SQL
Estabilidade geral
  • Tipos binaries igualam-se corretamente após a de-serialização
  • EntitySet.ListChanged é chamado quando adiciona-se itens a uma lista de entidades não carregada
  • Conexões são eliminadas assim que o contexto é eliminado (aquelas passadas são intocadas)
SQL Metal
  • Propriedades com chaves estrangeiras agora verificam todas as associações afetadas e não apenas a primeira
  • Melhor gerenciamento de erro quando o tipo da chave primária não é suportado
  • Stored Procedures com contendo parâmetros table-value são ignoradas ao invés de abortarem o processo
  • Agora pode ser utilizado com conexões que utilizam a síntaxe AttachDbFilename
  • Não trava mais quando tipos de dados inesperados são encontrados
Editor de classes LINQ to SQL
  • Agora lida com resultados com uma coluna anônima do SQL
  • Melhora no gerenciamento de mensagens para associações com colunas únicas que podem receber null
  • Não falha mais quando cláusulas using são adicionadas às classes parciais do usuário
  • VarChar(1) agora é mapeado corretamente para string ao invés de char
  • Precisão e escala do Decimal agora são corretamente emitidas nos atributes DbType para stored procedures
  • Mudanças em chaves estrangeiras serão aplicadas quando se trouxer tabelas de volta para o editor sem se reiniciá-lo
Geração de código (SQL Metal + editor de classes LINQ to SQL)
  • Stored procedures utilizando valores originais agora compilam mesmo que o namespace da entidade e do contexto sejam diferentes
  • Declarações virtual internal agora geram sintaxe correta
  • Atributos de mapeamento agora são plenamente qualificados para se evitar conflitos com tipos do usuário
  • Os KnownTypeAttributes agora são emitidos para o DataContractSerializer com herança
  • Chaves estrangeiras com carregamento atrasado agora têm seu código correto e compilável gerado
  • Utilizar stored procedures com concorrência não mais torna-se confuso se as entidades estão em um namespace diferente do contexto
  • ForeignKeyReferenceAlreadyHasValueException é lançada se qualquer associação for carregada e não só a primeira

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT