MVC DataContext Ok para compartilhar uma conexão ou não
-
22-07-2019 - |
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()}
)
}
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?