Pergunta

Quando é a "unidade de trabalho" não é mais uma "unidade"? Qual o cenário é melhor sobre os recursos? O primeiro cria uma conexão wheras o segundo cria 4.

using (DataContext dc=new DataContext) 
{
  var orders= from o in dc.orders 
              select ( new Product {  property a= from a in ..join... select x, 
                                      property b= from b in ..join... select y,
                                      property c= from c in ..join... select z.}
                      )
}

ou

using (DataContext dc=new DataContext) 
{
  var orders= from o in dc.orders 
              select ( new Product {  property a = GetPropertyA(), 
                                      property b = GetPropertyB(),
                                      property c = GetPropertyC()}
                      )
}
Foi útil?

Solução

Ao usar LINQ se você adicionar uma entidade para outra e eles usam um contexto de dados diferente que você está indo para obter um erro. Eu sugeriria manter o mesmo contexto de dados para cada unidade de trabalho que você está usando. Você pode facilmente identificar a unidade de trabalho que você está processando usando o padrão de repositório para escrever suas classes de acesso de dados. Se você não é clara sobre o padrão de repositório, confira esta entrada

Outras dicas

De um modo geral as viagens menos e volta para seu banco de dados, melhor. No entanto, em alta escala aplicativos muitas vezes fazemos nossas bases de dados mais e mais 'burro' por isso, acabam não fazendo qualquer junta-se assim que nós não amarrar CPU e memória no servidor de banco de dados SQL. Ela realmente depende de quais recursos você encontrar mais escassos. Se o seu servidor SQL tem abundância de recursos que a junção, caso contrário, puxando-o de volta separadamente seria melhor. Você já olhou para os resultados deste no profiler do SQL? Tem a certeza de que é 4 conexões, ou apenas 4 chamadas separadas?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top