BT

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

Avalie esse artigo

Relevância
Estilo/Redação

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
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.