--
--
Você recebeu esta mensagem por fazer parte da lista de discussão oficial da Comunidade NetPonto (http://netponto.org).
---
Recebeu esta mensagem porque está inscrito no grupo "NetPonto.org - Lista de Discussao Oficial" dos Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails deste grupo, envie um email para netponto+u...@googlegroups.com.
Para mais opções, consulte https://groups.google.com/groups/opt_out.
var orders = db.Orders.Where(p => p.CreatedByUserID == userId).ToList(); var _orders = Mapper.Map<IEnumerable<DataAccessModel.Order>, IEnumerable<PortalEmailService.Contracts.DataContracts.Order>>(orders);
OpenAccess uses lazy loading on the client where your application objects are filled with the data upon access. Not all fields will be filled immediately, so a collection or picture fields can be deferred in their population. This has the advantage of saving memory and network bandwidth while preserving easy access: when the field's content is needed, the data is fetched transparently from the database server. Of course, you can decide which fields are to be fetched when, and OpenAccess provides sensible defaults.
E pelos foruns, não dá para desligar
http://www.telerik.com/community/forums/orm/development/lazy-load.aspx
Aposto que o teu bottleneck é nisso.... Mas para tirares a teima, liga o sql profiler e vês que apesar de fazeres a query, só te vai buscar os dados quando fazes o Mapper.Map.
Fazer o mapeamento à pata é também algo que queria evitar por essas mesmas razões, e o tempo que levaria a ter tudo conforme... devido à extensiva lista de objectos (e associações).
Só isso talvez te corte o tempo por metade, e pode valer a pena experimentares ( e acho que é muito mais rapido de experimentar do que mudar para um dapper, ou fazer o handroll dos queries com ado e data readers). Se te trouxer a performance para niveis aceitaveis (que eu acho mesmo que é possível), talvez tenha o melhor ROI.Telerik.OpenAccess.FetchOptimization.FetchStrategy fetchStrategy = new Telerik.OpenAccess.FetchOptimization.FetchStrategy(); fetchStrategy.LoadWith<Order>(c => c.PortalUser );fetchStrategy.LoadWith<Order>(c => c.OrderFiles );fetchStrategy.LoadWith<Order>(c => c.OrderServices );
fetchStrategy.LoadWith<OrderService>(o => o.<outra lista a carregar no OrderService>);