none
Duvida do loadwith RRS feed

  • Pergunta

  • Boa tarde,

    Estou com uma duvida em realção a query gerada logo apos o uso do loadwith!

    Tenho um relacionamento 1-1 entre duas tabelas, e quando desativo o DeferredLoadingEnabled para usar o loadwith, a query gerada por ele não esta como esperava...

    Exemplo:

    //Carrega o reporter
    dlo.LoadWith<Noticia>(c => c.Usuario);

    olha a query que ele gera:

    SELECT [campos]
    FROM [eptvbkend].[tbNoticias] AS [t0]
    LEFT OUTER JOIN (
        SELECT 1 AS [test], [t3].[idUsuario], [t3].[login], [t3].[senha], [t3].[nome], [t3].[email], [t3].[fone], [t3].[idFuncao]
        FROM [tbUsuarios] AS [t3]
        ) AS [t4] ON [t4].[idUsuario] = [t0].[idUsuario]

    pq não gerar uma query mais simples, como segue:

    SELECT [campos]
    FROM [eptvbkend].[tbNoticias] AS [t0]
    INNER JOIN ([tbCidades] AS [t1]
    LEFT OUTER JOIN [tbUsuarios] AS [t1] ON [t1].[idUsuario] = [t0].[idUsuario]

    ???

    esse relaciomento permite que o usuario seja NULL em noticia, o que ele deve entender como LEFT JOIN, mais pq ele cria uma subquery nesse join!??

    Isso não irá me trazer problemas de perfomance?

    Obrigado
    quarta-feira, 22 de outubro de 2008 15:00

Todas as Respostas

  • Ele cria esta subquery por causa do loadwith.

    Quando utilizamos ele o gerador do linq to sql cria uma subquery para cada item. Acredito que a opção pela subquery se deu para deixar o linq mais flexivel.

     

    quinta-feira, 23 de outubro de 2008 19:30
  • Imagino que a opção de subquary seja essa a flexibilidade mesmo

    Mais o loadwith, as vezes, se comporta de outra forma, existe alguns relacionamentos que ele faz inner join, e o estranho é que eu analizei tds e não vi diferença...

    Esse linq deveria ter um log do pq ele monta essas querys assim rsrs

    Agora, mudando um pouco de assunto...
    oq vcs acham da biblioteca Dynamic Where...!!???

    Estou usando ela pq ela me abre mais opções para usar o linq.... 

    Sera que ele é confiavel?

    Vlwww


    sexta-feira, 24 de outubro de 2008 11:30