<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Carlos Walzer : Performance</title><link>http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx</link><description>Tags: Performance</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Materiales: Mejoras de Desempeño de Aplicaciones .NET</title><link>http://msmvps.com/blogs/cwalzer/archive/2009/03/18/materiales-mejoras-de-desempe-241-o-de-aplicaciones-net.aspx</link><pubDate>Wed, 18 Mar 2009 17:09:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1679056</guid><dc:creator>cwalzer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1679056</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2009/03/18/materiales-mejoras-de-desempe-241-o-de-aplicaciones-net.aspx#comments</comments><description>&lt;p&gt;Aqui est&amp;aacute;n los materiales de la charla &amp;quot;&lt;strong&gt;Mejoras de Desempe&amp;ntilde;o de Aplicaciones .NET&lt;/strong&gt;&amp;quot; dictada&amp;nbsp;ayer&amp;nbsp;en el Microsoft User Group de Argentina.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cwalzer.conferencias/PerfTuneApp.NET032009.zip"&gt;Presentaci&amp;oacute;n&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Esta es la zaga de art&amp;iacute;culos que&amp;nbsp;tratan las t&amp;eacute;cnicas utilizadas en la charla:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/09/24/anti-pr-225-cticas-i-acceso-a-datos-con-ado-net.aspx"&gt;Anti Pr&amp;aacute;cticas .NET: Lectura de Datos con ADO.NET&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/10/30/antipracticasnetlecturaadonet2.aspx"&gt;Anti Pr&amp;aacute;cticas .NET: Lectura de Datos con ADO.NET II&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/11/12/antipracticaslecturadatosnet3.aspx"&gt;Anti Pr&amp;aacute;cticas .NET: Lectura de Datos con ADO.NET III&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2008/05/20/performance_5F00_memoria_5F00_ado_5F00_net.aspx"&gt;Performance: Datos en Memoria con ADO.NET IV&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1679056" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Capacitacion/default.aspx">Capacitacion</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Anti+Practicas/default.aspx">Anti Practicas</category></item><item><title>Materiales: Code Camp Buenos Aires 2008</title><link>http://msmvps.com/blogs/cwalzer/archive/2008/10/04/materiales-code-camp-buenos-aires-2008.aspx</link><pubDate>Sat, 04 Oct 2008 11:12:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1649721</guid><dc:creator>cwalzer</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1649721</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2008/10/04/materiales-code-camp-buenos-aires-2008.aspx#comments</comments><description>&lt;p&gt;Aqui est&amp;aacute;n los materiales de la charla &amp;quot;&lt;strong&gt;Mejoras de Desempe&amp;ntilde;o de Aplicaciones .NET&lt;/strong&gt;&amp;quot; dictada hoy en el CodeCamp Buenos Aires&amp;nbsp;2008. (A prop&amp;oacute;sito, impresionado por la cantidad de asistentes).&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cwalzer.conferencias/CodeCamp2008MejoraDesempAppNET.zip"&gt;Presentaci&amp;oacute;n&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Esta es la zaga de art&amp;iacute;culos que&amp;nbsp;tratan las t&amp;eacute;cnicas utilizadas en la charla:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/09/24/anti-pr-225-cticas-i-acceso-a-datos-con-ado-net.aspx"&gt;Anti Pr&amp;aacute;cticas .NET: Lectura de Datos con ADO.NET&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/10/30/antipracticasnetlecturaadonet2.aspx"&gt;Anti Pr&amp;aacute;cticas .NET: Lectura de Datos con ADO.NET II&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/11/12/antipracticaslecturadatosnet3.aspx"&gt;Anti Pr&amp;aacute;cticas .NET: Lectura de Datos con ADO.NET III&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2008/05/20/performance_5F00_memoria_5F00_ado_5F00_net.aspx"&gt;Performance: Datos en Memoria con ADO.NET IV&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2008/10/04/materiales-code-camp-buenos-aires-2008.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1649721" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Capacitacion/default.aspx">Capacitacion</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Anti+Practicas/default.aspx">Anti Practicas</category></item><item><title>CodeCamp - Buenos Aires 2008</title><link>http://msmvps.com/blogs/cwalzer/archive/2008/09/10/code-camp-buenos-aires-2008.aspx</link><pubDate>Thu, 11 Sep 2008 00:29:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1647444</guid><dc:creator>cwalzer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1647444</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2008/09/10/code-camp-buenos-aires-2008.aspx#comments</comments><description>&lt;div class="event_profile_title"&gt;
&lt;h3&gt;Evento Acad&amp;eacute;mico gratuito con m&amp;aacute;s de 40 conferencias sobre tecnolog&amp;iacute;as Microsoft dicatadas por referentes de la industria.&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="event_profile_information"&gt;
&lt;table cellspacing="0" class="info_table"&gt;


&lt;tr&gt;
&lt;td class="label"&gt;Fecha:&lt;/td&gt;
&lt;td&gt;
&lt;div class="datawrap"&gt;Saturday, October 4, 2008&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="label"&gt;Hora:&lt;/td&gt;
&lt;td&gt;
&lt;div class="datawrap"&gt;10:00am - 7:00pm&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="label"&gt;Lugar:&lt;/td&gt;
&lt;td&gt;
&lt;div class="datawrap"&gt;UAI&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="label"&gt;Direcci&amp;oacute;n:&lt;/td&gt;
&lt;td&gt;
&lt;div class="datawrap"&gt;San Juan 983&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="label"&gt;Ciudad:&lt;/td&gt;
&lt;td&gt;
&lt;div class="datawrap"&gt;Buenos Aires, Argentina&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="label"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;
&lt;div class="datawrap"&gt;
&lt;div class="clearfix"&gt;
&lt;div style="DISPLAY:none;" id="maps_options_menu"&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style="DISPLAY:none;"&gt;&lt;/div&gt;
&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;/div&gt;
&lt;div class="UIProfileBox_Container"&gt;
&lt;div class="UIProfileBox_Box"&gt;
&lt;h3 class="UIProfileBox_Header clearfix"&gt;&lt;span class="UIProfileBox_Title"&gt;Descripci&amp;oacute;n&lt;/span&gt;&lt;/h3&gt;
&lt;div class="UIProfileBox_Content"&gt;
&lt;div class="description UIOneOff_Container"&gt;&amp;bull; Novedades en Tecnolog&amp;iacute;as Microsoft&lt;br /&gt;&amp;bull; M&amp;aacute;s de 40 conferencias t&amp;eacute;cnicas de Referentes de la Industria&lt;br /&gt;&amp;bull; Sorteos entre los asistentes&lt;br /&gt;&lt;br /&gt;M&amp;aacute;s detalles en el sitio del evento: &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com.ar/codecamp/"&gt;&lt;span style="color:#3b5998;"&gt;http://www.microsoft.com.ar/codecamp/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Agenda&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;10:00 a 10:30 Registraci&amp;oacute;n - Recepci&amp;oacute;n&lt;br /&gt;&lt;br /&gt;10:30 a 11:00 Apertura y revisi&amp;oacute;n de agenda&lt;br /&gt;&lt;br /&gt;11:15 a 12:15 &lt;br /&gt;Programando por un sue&amp;ntilde;o - Patricio Jutard &lt;br /&gt;Introducci&amp;oacute;n a ASP.NET MVC - Pablo Cibraro &lt;br /&gt;Videojuegos Multiplataforma con XNA - Augusto Chesini &lt;br /&gt;Todo Lo Que Hay Que Saber Acerca De Linq - Mat&amp;iacute;as Bonaventura &lt;br /&gt;&lt;strong&gt;Mejoras De Desempe&amp;ntilde;o De Aplicaciones .Net - Carlos Walzer &lt;br /&gt;&lt;/strong&gt;Gesti&amp;oacute;n De Proyectos De Software: Un Enfoque Pr&amp;aacute;ctico - Maximiliano Menasches e Ignacio L&amp;oacute;pez &lt;br /&gt;Windows Presentation Foundation Para Desarrolladores - Andres Aguiar &lt;br /&gt;Python En La Plataforma .Net - Mart&amp;iacute;n Sal&amp;iacute;as &lt;br /&gt;Introducci&amp;oacute;n A Grafos - Pablo Gauna &lt;br /&gt;Wamp - Maximo Naccarato &lt;br /&gt;IIS7 4x4 - Alberto Ortega Y Horacio Gonzalez&lt;br /&gt;&lt;br /&gt;12:30 a 13:30 &lt;br /&gt;Andamios en la web: Desarrollo &amp;aacute;gil con ASP.NET Dynamic Data - Miguel Saez &lt;br /&gt;Desarrollo web multi-capa con Volta: un paso hacia adelante - Pablo Zaidenvoren Y Rodolfo Finochietti &lt;br /&gt;Wpf 3d Y F&amp;iacute;sica - Dami&amp;aacute;n Galletini &lt;br /&gt;Microsoft Sql Server 2008 &amp;ndash; Introducci&amp;oacute;n A &amp;ldquo;Microsoft Sql Server Data Platform&amp;rdquo; - Johnny Halife &lt;br /&gt;Patrones De Arquitectura Con C# - Mat&amp;iacute;as Iacono &lt;br /&gt;Vsts Y Scrum - Daniel Zacharias &lt;br /&gt;Creando Aplicaciones En Wpf - Jos&amp;eacute; Villagr&amp;aacute;n &lt;br /&gt;Parallel Extensions - Nicol&amp;aacute;s Padula Y Mauricio Lopez &lt;br /&gt;Entorno De Desarrollo Para Windows Mobile 6 - Leonardo Natale &lt;br /&gt;Windows Server 2008 + Iis 7 - Augusto Alvarez &lt;br /&gt;Desmitificando Windows Vista - Mariano Rempel&lt;br /&gt;&lt;br /&gt;13:30 a 14:45 &lt;br /&gt;Almuerzo &amp;ndash; Demo Fest&lt;br /&gt;&lt;br /&gt;15:00 a 16:00 &lt;br /&gt;El futuro de la ingenier&amp;iacute;a de software - Santiago Ceria &lt;br /&gt;Silverlight 2.0 Beta 2 - Construyendo Aplicaciones Web Atractivas Utilizando Microsoft Silverlight - Ivana Tilca &lt;br /&gt;3d Games Technology: Computer Animation - Diego Park &lt;br /&gt;Ado.Net Entity Framework En Acci&amp;oacute;n - Maximiliano Menasches Y Hern&amp;aacute;n Nobile &lt;br /&gt;T&amp;eacute;cnicas Para Mejorar La Performance En Sitios Web - Juan Ladetto &lt;br /&gt;Scrum - Patricio Jutard &lt;br /&gt;&amp;iquest;Qu&amp;eacute; Es &amp;quot;Wpf/E&amp;quot;? - Luis Perdomo &lt;br /&gt;Reconocimiento Facial - Armando Meabe &lt;br /&gt;Novedades De Vs 2008 Y Cf 3.5 Para Wm6 - Leonardo Natale &lt;br /&gt;Introducci&amp;oacute;n A La Administraci&amp;oacute;n De Sucursales Con Windows Server 2008 - Leonardo Amaya &lt;br /&gt;Seguridad En Windows Server 2008 - Leandro Amore&lt;br /&gt;&lt;br /&gt;16:15 a 17:15 &lt;br /&gt;Hyper-V en acci&amp;oacute;n - Alejandro Ponicke Y Leandro Amore &lt;br /&gt;Expression Blend - Marcelo Quevedo &lt;br /&gt;Qu&amp;eacute; Es Linq? - Guillermo Delfino &lt;br /&gt;Programaci&amp;oacute;n Intuitiva De Xml En El Marco .Net (Xlinq) - Mauricio Grimberg &lt;br /&gt;Howto: Performance Y Load Testing - Matias Woloski Y Federico Boerr &lt;br /&gt;&amp;iquest;C&amp;oacute;mo Lograr Un Proyecto Exitoso? - Patricia Scalzone &lt;br /&gt;Construcci&amp;oacute;n De Servicios Rest Con Wcf - Pablo Cibraro &lt;br /&gt;Microsoft Robotics Studio - Mauro Castagnasso &lt;br /&gt;Introducci&amp;oacute;n A Los Conceptos De Generics Y Delegates - Ezequiel Cura &lt;br /&gt;Monitoreo De Aplicaciones Heterog&amp;eacute;neas - Alberto Ortega &lt;br /&gt;Instalando Windows Vista - Francisco Moura&lt;br /&gt;&lt;br /&gt;17:15 a 18:30 &lt;br /&gt;Break &amp;ndash; Demo Fest&lt;br /&gt;&lt;br /&gt;18:45 a 20:00 &lt;br /&gt;Cierre del Evento y Sorteos&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1647444" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Capacitacion/default.aspx">Capacitacion</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Video: Load Test en Visual Studio 2008</title><link>http://msmvps.com/blogs/cwalzer/archive/2008/08/01/Load_5F00_Test_5F00_Visual_5F00_Studio_5F00_2008.aspx</link><pubDate>Fri, 01 Aug 2008 04:29:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1642977</guid><dc:creator>cwalzer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1642977</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2008/08/01/Load_5F00_Test_5F00_Visual_5F00_Studio_5F00_2008.aspx#comments</comments><description>&lt;p&gt;&lt;span class="videoDetailsDescription"&gt;Como preparar, correr y analizar un Web Test utilizando Visual Studio 2008 Team Systems.&lt;/span&gt; &lt;a href="http://msmvps.com/controlpanel/blogs/posteditor.aspx?SelectedNavItem=NewPost" style="display:none;visibility:hidden;" class="tLink"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://video.msn.com/video.aspx?vid=7fb18cc8-2700-4302-99e2-9df89fa71284"&gt;&lt;img width="433" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cwalzer.Videos/HowToLoadTest.jpg" height="364" style="border:0;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Duraci&amp;oacute;n: 12:59&lt;/p&gt;
&lt;p&gt;Extra&amp;iacute;do del &lt;a target="_self" href="http://msmvps.com/blogs/cwalzer/archive/2008/06/25/v-237-deo-herramientas-para-asegurar-la-calidad-utilizando-visual-studio-team-system-2008.aspx"&gt;&lt;span style="color:#3399ff;"&gt;Lanzamiento de Visual Studio 2008&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2008/08/01/Load_5F00_Test_5F00_Visual_5F00_Studio_5F00_2008.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1642977" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Testing/default.aspx">Testing</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/VS+Team+Systems/default.aspx">VS Team Systems</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Rendimiento/default.aspx">Rendimiento</category></item><item><title>Video: Mejora de Desempeño (Performance Tuning) con Visual Studio 2008 Team Systems</title><link>http://msmvps.com/blogs/cwalzer/archive/2008/07/28/Performance-tuning-visual-studio.aspx</link><pubDate>Mon, 28 Jul 2008 08:47:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1642484</guid><dc:creator>cwalzer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1642484</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2008/07/28/Performance-tuning-visual-studio.aspx#comments</comments><description>&lt;p&gt;Este video muestra como mejorar el desempe&amp;ntilde;o (Perfoemance Tuning)&amp;nbsp;de las aplicaciones .NET detectando cuellos de botella con Visual Studio Team System 2008&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://video.msn.com/video.aspx?vid=5dd93b43-68c7-4e55-a192-621fba042188"&gt;&lt;img width="431" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cwalzer.Videos/VideoTuningVSTS.jpg" height="366" style="border:0;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Duraci&amp;oacute;n: 7:51&lt;/p&gt;
&lt;p&gt;Extra&amp;iacute;do del &lt;a target="_self" href="http://msmvps.com/blogs/cwalzer/archive/2008/06/25/v-237-deo-herramientas-para-asegurar-la-calidad-utilizando-visual-studio-team-system-2008.aspx"&gt;Lanzamiento de Visual Studio 2008&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2008/07/28/Performance-tuning-visual-studio.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1642484" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/VS+Team+Systems/default.aspx">VS Team Systems</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Rendimiento/default.aspx">Rendimiento</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Video/default.aspx">Video</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Tuning/default.aspx">Tuning</category></item><item><title>Vídeo: Herramientas para asegurar la calidad utilizando Visual Studio Team System 2008</title><link>http://msmvps.com/blogs/cwalzer/archive/2008/06/25/v-237-deo-herramientas-para-asegurar-la-calidad-utilizando-visual-studio-team-system-2008.aspx</link><pubDate>Wed, 25 Jun 2008 17:56:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1637681</guid><dc:creator>cwalzer</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1637681</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2008/06/25/v-237-deo-herramientas-para-asegurar-la-calidad-utilizando-visual-studio-team-system-2008.aspx#comments</comments><description>&lt;p&gt;Durante el lanzamiento de Visual Studio 2008, he grabado un v&amp;iacute;deo exponiendo las &lt;a target="_blank" href="http://www.microsoft.com/spanish/msdn/latam/mediacenter/webcast/eventos.aspx"&gt;Herramientas para asegurar la calidad utilizando Visual Studio Team System 2008&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All&amp;iacute; hago una presentaci&amp;oacute;n sobre el aseguramiento de calidad y reviso las t&amp;eacute;cnicas y herramientas propuestas por Visual Studio 2008. Adem&amp;aacute;s hago un repaso por:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Testing (WebTest, LoadTest)&lt;/li&gt;
&lt;li&gt;An&amp;aacute;lisis de Rendimiento (Profiler, Performance)&lt;/li&gt;
&lt;li&gt;Profiling de C&amp;oacute;digo (Code)&lt;/li&gt;
&lt;li&gt;T&amp;eacute;cnicas de analisis el c&amp;oacute;digo ( Managed Code Analisys Tool, FxCop)&lt;/li&gt;
&lt;li&gt;M&amp;eacute;tricas de c&amp;oacute;digo (Code Metrics).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El v&amp;iacute;deo est&amp;aacute; disponible para &lt;a target="_blank" href="http://www.dominiodigital-la.net/microsoft/heroes/walzer.wmv"&gt;bajarlo&lt;/a&gt; o verlo en &lt;a target="_blank" href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032379620&amp;amp;EventCategory=3&amp;amp;culture=es-AR&amp;amp;CountryCode=AR"&gt;l&amp;iacute;nea&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Adem&amp;aacute;s puedes bajar el c&amp;oacute;digo y la presentaci&amp;oacute;n desde &lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/Conferencias/Walzer-QAconTeamSystem-Launch2008.zip"&gt;aqu&amp;iacute;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2008/06/25/v-237-deo-herramientas-para-asegurar-la-calidad-utilizando-visual-studio-team-system-2008.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1637681" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Capacitacion/default.aspx">Capacitacion</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Testing/default.aspx">Testing</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/VS+Team+Systems/default.aspx">VS Team Systems</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Rendimiento/default.aspx">Rendimiento</category></item><item><title>Performance: Datos en Memoria con ADO.NET IV</title><link>http://msmvps.com/blogs/cwalzer/archive/2008/05/20/performance_5F00_memoria_5F00_ado_5F00_net.aspx</link><pubDate>Tue, 20 May 2008 23:50:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1608472</guid><dc:creator>cwalzer</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1608472</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2008/05/20/performance_5F00_memoria_5F00_ado_5F00_net.aspx#comments</comments><description>&lt;p&gt;En este art&amp;iacute;culo quisiera mostrarles cual es el consumo de memoria de algunas t&amp;eacute;cnicas de acceso a datos. En art&amp;iacute;culos anteriores hemos estudiado y optimizado performance&amp;nbsp;mejorando el tiempo de procesamiento. Como colorario veremos algunos gr&amp;aacute;ficos que siempre ayudan a la comparaci&amp;oacute;n. &lt;/p&gt;
&lt;p&gt;Este art&amp;iacute;culo est&amp;aacute; relacionado con: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/09/24/anti-pr-225-cticas-i-acceso-a-datos-con-ado-net.aspx"&gt;Performance: Lectura de Datos con ADO.NET&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/09/24/anti-pr-225-cticas-i-acceso-a-datos-con-ado-net.aspx"&gt;Performance: Lectura de Datos con ADO.NET II&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/09/24/anti-pr-225-cticas-i-acceso-a-datos-con-ado-net.aspx"&gt;Performance: Lectura de Datos con ADO.NET III&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Presentaci&amp;oacute;n del escenario&lt;/h3&gt;
&lt;p&gt;Este es el contexto en el que estoy haciendo las mediciones: &lt;/p&gt;
&lt;p&gt;Una aplicaci&amp;oacute;n Windows Forms, que utiliza 4 mecanismos para recuperar datos &amp;ldquo;de solo lectura&amp;rdquo; de la base de datos AdvertureWorks alojada en SQL Server 2005: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DataReader cargado en una lista gen&amp;eacute;rica de objetos de entidad&lt;/li&gt;
&lt;li&gt;DataSet&lt;/li&gt;
&lt;li&gt;DataTable&lt;/li&gt;
&lt;li&gt;DataSet tipificado creado con el asistente de Visual Studio 2005&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aqu&amp;iacute; subrayo &amp;ldquo;&lt;span style="text-decoration:underline;"&gt;solo lectura&lt;/span&gt;&amp;rdquo; porque, justamente solo quiero recuperar los datos, y no hacer ninguna operaci&amp;oacute;n sobre ellos. &lt;/p&gt;
&lt;h3&gt;Memoria y Garbage Collector&lt;/h3&gt;
&lt;p&gt;Si bien sabemos que la administraci&amp;oacute;n de la memoria en .NET es un trabajo que le compete al Garbage Collector y que no es terreno en el que debamos hurgar, a no ser que sea por administraci&amp;oacute;n de memoria no manejada, siempre es bueno saber que uso hacemos de &amp;eacute;l. Si bien el Garbage Collector es un mecanismo muy optimizado, y hace un muy buen trabajo de recolecci&amp;oacute;n de basura (memoria no utilizada), tiene sus limitaciones y su costo. Ser&amp;iacute;a una buena actitud de parte nuestra considerar al Garbage Collector como un recurso m&amp;aacute;s, as&amp;iacute; como lo es la memoria. Teniendo en cuenta esto lograr&amp;iacute;amos minimizar su trabajo, lo cual redundar&amp;iacute;a en un mejor rendimiento de nuestra aplicaci&amp;oacute;n. &lt;/p&gt;
&lt;h3&gt;El C&amp;oacute;digo&lt;/h3&gt;
&lt;p&gt;La versi&amp;oacute;n completa del c&amp;oacute;digo podr&amp;aacute;s bajarla de aqu&amp;iacute;. De todas formas d&amp;eacute;mosle un vistazo: &lt;/p&gt;
&lt;p&gt;Esta es la sentencia sql a ejecutar en la base de datos AdventureWorks: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;Select&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;HumanResources.Employee.EmployeeID, Person.Contact.FirstName,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.Contact.MiddleName, Person.Contact.LastName,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HumanResources.Employee.Title, HumanResources.Employee.BirthDate,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.Address.AddressLine1, Person.Address.AddressLine2,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.Address.City, Person.Address.PostalCode, Person.Contact.EmailAddress,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.Contact.Phone, HumanResources.Employee.MaritalStatus, HumanResources.Employee.Gender&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;HumanResources.Employee&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INNER JOIN &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;Person.Contact &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;ON &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;HumanResources.Employee.ContactID = Person.Contact.ContactID&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INNER JOIN &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;HumanResources.EmployeeAddress &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;ON &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;HumanResources.Employee.EmployeeID = HumanResources.EmployeeAddress.EmployeeID&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INNER JOIN &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;Person.Address &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;ON &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;HumanResources.EmployeeAddress.AddressID = Person.Address.AddressID&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AND &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;HumanResources.EmployeeAddress.AddressID = Person.Address.AddressID&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;La clase DataAccess &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataAccess&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;static&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;readonly&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; _connString;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;static&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;readonly&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; _sqlCmd;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;static&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; DataAccess()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _connString = &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Password=;User ID=sa;Initial Catalog=AdventureWorks;Data Source=WALZER3&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#008000;"&gt;&lt;span style="font-size:x-small;color:#008000;"&gt;//Obtengo la sentencia SQL que est&amp;aacute; en el archivo de texto Consulta.sql&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;StreamReader&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; sr = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;StreamReader&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Assembly&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.GetExecutingAssembly().GetManifestResourceStream(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Walzer.Antipracticas.Consulta.sql&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sqlCmd = sr.ReadToEnd();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataSet&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; TraerDataSet()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataSet&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; ds = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;using&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; (&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; conn = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(_connString))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; conn.Open();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; cmd = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandText = &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;GetEmployees&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Connection = conn;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandType = &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;CommandType&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.StoredProcedure;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlDataAdapter&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; da = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlDataAdapter&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(cmd);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ds = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataSet&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da.Fill(ds);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;catch&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; ds;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;List&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Employee&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;gt; TraerEmployeesOptimizado()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;List&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Employee&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;gt; employees = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;List&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Employee&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;try&lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;using&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; (&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; conn = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(_connString))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; cmd = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;cmd.CommandText = &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;GetEmployees&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;cmd.Connection = conn;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;cmd.CommandType = &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;CommandType&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.StoredProcedure;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;conn.Open();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;using&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; (&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlDataReader&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; dr = cmd.ExecuteReader())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; colEmployeeId = dr.GetOrdinal(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;EmployeeId&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; colFirstName = dr.GetOrdinal(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;FirstName&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size:x-small;color:#008000;"&gt;&lt;span style="font-size:x-small;color:#008000;"&gt;// Omito las l&amp;iacute;neas similares por cuesti&amp;oacute;n de lectura&lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; colCount = dr.FieldCount;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;object&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;[] values = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;object&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;[colCount];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;while&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; (dr.Read())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Employee&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; employee = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Employee&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dr.GetValues(values);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; employee.EmployeeID = &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Convert&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.ToInt32(values[colEmployeeId]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; employee.FirstName = &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Convert&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.ToString(values[colFirstName]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;employees.Add(employee);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;catch&lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; employees;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataTable&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; TraerDataTableOptimizado()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#008000;"&gt;&lt;span style="font-size:x-small;color:#008000;"&gt;//Este m&amp;eacute;todo est&amp;aacute; optimizado para cargar un DataTable con datos de SOLO LECTURA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataTable&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; dt = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;using&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; (&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; conn = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(_connString))&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; conn.Open();&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; cmd = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;cmd.CommandText = &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;GetEmployees&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Connection = conn;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandType = &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;CommandType&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.StoredProcedure;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlDataAdapter&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; da = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlDataAdapter&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(cmd);&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;dt = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataTable&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da.Fill(dt);&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;catch&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; dt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;El DataSet tipificado fue creado arrastrando la consulta SQL sobre la superficie de dise&amp;ntilde;o del DataSet, lo &amp;uacute;nico que escrib&amp;iacute; fue las siguientes l&amp;iacute;neas para cargar el DataSet tipificado:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;DsEmployeesTableAdapters.&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;GetEmployeesTableAdapter&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; da = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; Walzer.Antipracticas.DsEmployeesTableAdapters.&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;GetEmployeesTableAdapter&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;br /&gt;_dsEmployees = da.GetData();&lt;/span&gt;&lt;/p&gt;
&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Lectura del uso de Memoria&lt;/h3&gt;
&lt;p&gt;Vamos medir el uso de memoria de cada una de estas t&amp;eacute;cnicas de acceso a datos utilizando 3 herramientas: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.jetbrains.com/profiler/"&gt;JetBrains DotTrace 3.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://memprofiler.com/"&gt;.NET Memory Profiler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/Downloads/details.aspx?familyid=A362781C-3870-43BE-8926-862B40AA0CD0&amp;amp;displaylang=en"&gt;CLR Profiler 2.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El CLR Profiler nos revela en una primera lectura de 290 registros representados en memoria por cada una de las t&amp;eacute;cnicas.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIV02.png"&gt;&lt;img border="0" width="922" src="http://msmvps.com/blogs/cwalzer/AP/APIV02.png" height="611" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="1" src="http://msmvps.com/controlpanel/blogs/posteditor.aspx/AP/APIV01.png" height="1" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;En este gr&amp;aacute;fico podemos observar que el objeto del tipo AntiPracticas.frmMemoria, que es nuestra ventana, y sus referenciados consumen 836 Kb. Aunque la variable que apunta a esta estructura es de solo 368 bytes. &lt;/p&gt;
&lt;p&gt;AntiPracticas.frmMemoria tiene cuatro campos privados que apuntan a: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un DataSet Tipado (DsEmployees.GetEmployeesDataTable): 313 Kb&lt;/li&gt;
&lt;li&gt;un DataSet (Data.DataSet): 185 Kb&lt;/li&gt;
&lt;li&gt;un DataTable (Data.DataTable ): 184 Kb&lt;/li&gt;
&lt;li&gt;una colecci&amp;oacute;n gen&amp;eacute;rica de objetos del tipo Employee (Generic.List&amp;lt;T&amp;gt;): 138 Kb&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aqu&amp;iacute; mismo podemos apreciar que el DataSetTipado es la estructura m&amp;aacute;s costosa en cuanto a consumo de memoria. Que no hay casi diferencia entre un DataSet y un DataTable, y que la colecci&amp;oacute;n de objetos es la m&amp;aacute;s barata. No est&amp;aacute; dem&amp;aacute;s destacar que todas las estructuras contienen &amp;ldquo;los mismos datos&amp;rdquo;. &lt;/p&gt;
&lt;p&gt;La misma informaci&amp;oacute;n podemos verla en JetBrains DotTrace.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIV03.png"&gt;&lt;img border="0" width="1009" src="http://msmvps.com/blogs/cwalzer/AP/APIV03.png" height="519" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/WindowsLiveWriter/AntiPrcticas.NETDatosenMemoriaconADO.NET_A660/clip_image004_2.jpg"&gt;&lt;img border="0" width="1" src="http://msmvps.com/blogs/cwalzer/AP/APIV02.png" height="1" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Observen la columna &amp;ldquo;Held Memory, bytes&amp;rdquo;, que es la memoria referenciada por cada instancia: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;_dsEmployees (Walzer.Antipracticas.DsEmployees.GetEmployeesDataTable)&lt;/li&gt;
&lt;li&gt;_ds (System.Data.DataSet)&lt;/li&gt;
&lt;li&gt;_dt (System.Data.DataTable)&lt;/li&gt;
&lt;li&gt;_employees (System.Collection.Generic.List&amp;lt;Employee&amp;gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Estructura de Objetos en memoria&lt;/h3&gt;
&lt;p&gt;Comparemos en las siguientes dos capturas la complejidad de una y otra estructura, las cuales almacenan los mismos datos, de solo lectura en nuestro caso. &lt;/p&gt;
&lt;p&gt;La primera figura nos muestra la lista gen&amp;eacute;rica _employees, la cual est&amp;aacute; implementada internamente por un vector de _items, que contiene un conjunto de objetos Employee, la cual contiene finalmente los datos. &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIV04.png"&gt;&lt;img border="0" width="1009" src="http://msmvps.com/blogs/cwalzer/AP/APIV04.png" height="636" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Observemos ahora la estructura de un DataSet tipificado, y el camino para llegar al dato final. &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIV05.png"&gt;&lt;img border="0" width="1009" src="http://msmvps.com/blogs/cwalzer/AP/APIV05.png" height="720" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;La estructura es mucho m&amp;aacute;s compleja, pero no perdamos de vista que un DataSet fue dise&amp;ntilde;ado con la premisa de prop&amp;oacute;sito general, y mucho de su funcionalidad es &amp;uacute;til. Debemos usar nuestro criterio a la hora de decidir que es mejor para nuestro sistema. &lt;/p&gt;
&lt;h3&gt;Inspeccionado contenido de las variables&lt;/h3&gt;
&lt;p&gt;Usemos ahora la herramienta .NET Memory Profiler para ver el contenido de un objeto del tipo Employee. Esta figura nos muestra las referencias a la que hace este objeto, que son System.String. &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIV06.png"&gt;&lt;img border="0" width="1000" src="http://msmvps.com/blogs/cwalzer/AP/APIV06.png" height="543" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Pero, &amp;iquest;d&amp;oacute;nde est&amp;aacute; el campo _idEmployee que es del tipo int o _birthDate que es de tipo DateTime? Bien, estos est&amp;aacute;n contenidos en el mismo espacio de memoria que el objeto del tipo Employee ya que son tipos b&amp;aacute;sicos, int y ulong respectivamente. En cambio System.String es una referencia al espacio de memoria donde est&amp;aacute; guardada la cadena de caracteres. La solapa Field Values nos muestra el contenido de la instancia #12,729 del objeto del tipo Employee. Adem&amp;aacute;s de esta informaci&amp;oacute;n podemos apreciar, cuales son los caminos al Root de este objeto, y cu&amp;aacute;l fue el Call Stack que instanci&amp;oacute; este objeto en memoria. &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIV07.png"&gt;&lt;img border="0" width="1000" src="http://msmvps.com/blogs/cwalzer/AP/APIV07.png" height="543" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;Cantidad de Objetos referenciados&lt;/h3&gt;
&lt;p&gt;Un dato que no es menor aqu&amp;iacute; es el que nos muestra la columna &amp;ldquo;Held Objects&amp;rdquo;. Esta nos dice cuantos objetos son referenciados en toda la estructura en memoria. &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIV08.png"&gt;&lt;img border="0" width="1009" src="http://msmvps.com/blogs/cwalzer/AP/APIV08.png" height="500" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;En este caso la cantidad de filas en memoria para cada estructura es de 10, valor que se asemeja m&amp;aacute;s a la realidad, ya que no es buena pr&amp;aacute;ctica pasar todas las filas del resultado entre capas, sino usar t&amp;eacute;cnicas de paginaci&amp;oacute;n. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;_dsEmployees (Walzer.Antipracticas.DsEmployees.GetEmployeesDataTable): 320&lt;/li&gt;
&lt;li&gt;_ds (System.Data.DataSet): 213&lt;/li&gt;
&lt;li&gt;_dt (System.Data.DataTable): 206&lt;/li&gt;
&lt;li&gt;_employees (System.Collection.Generic.List&amp;lt;Employee&amp;gt;): 122&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;M&amp;aacute;s all&amp;aacute; de la cantidad de memoria en bytes, la cantidad de objetos referenciados nos da una idea del trabaj&amp;oacute; que tendr&amp;aacute; el Garbage Collector al momento de deshacerse de estos objetos. Cuantas m&amp;aacute;s referencias en memoria, m&amp;aacute;s recursos consumidos por este algoritmo. &lt;/p&gt;
&lt;h3&gt;Comparaci&amp;oacute;n de resultados&lt;/h3&gt;
&lt;p&gt;Veamos una serie de gr&amp;aacute;ficos que resumen las lecturas realizadas. Tom&amp;eacute; lecturas de 290 registros, 10 registros (que es el t&amp;iacute;pico caso del tama&amp;ntilde;o de una p&amp;aacute;gina cuando se realiza paginaci&amp;oacute;n) y 1 registro.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" style="MARGIN-LEFT:-0.9pt;WIDTH:291pt;BORDER-COLLAPSE:collapse;" class="MsoNormalTable"&gt;

&lt;tr style="height:15pt;"&gt;
&lt;td style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:windowtext 1pt solid;PADDING-LEFT:5.4pt;BACKGROUND:#4f81bd 0% 50%;PADDING-BOTTOM:0in;BORDER-LEFT:windowtext 1pt solid;WIDTH:146pt;PADDING-TOP:0in;BORDER-BOTTOM:windowtext 1pt solid;HEIGHT:15pt;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;b&gt;&lt;span&gt;Bytes en Memoria&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:windowtext 1pt solid;PADDING-LEFT:5.4pt;BACKGROUND:#4f81bd 0% 50%;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:49pt;PADDING-TOP:0in;BORDER-BOTTOM:windowtext 1pt solid;HEIGHT:15pt;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;b&gt;&lt;span&gt;290 reg&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:windowtext 1pt solid;PADDING-LEFT:5.4pt;BACKGROUND:#4f81bd 0% 50%;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:windowtext 1pt solid;HEIGHT:15pt;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;b&gt;&lt;span&gt;10 reg&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:windowtext 1pt solid;PADDING-LEFT:5.4pt;BACKGROUND:#4f81bd 0% 50%;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:windowtext 1pt solid;HEIGHT:15pt;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;b&gt;&lt;span&gt;1 reg&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:15pt;"&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:1pt solid;WIDTH:146pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;DataSet&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:49pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;189112&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;19028&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;14856&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:15pt;"&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:1pt solid;WIDTH:146pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;DataTable&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:49pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;188848&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;18764&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;14588&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:15pt;"&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:1pt solid;WIDTH:146pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;List&amp;lt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:49pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;141774&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;4790&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;514&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:15.75pt;"&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:1pt solid;WIDTH:146pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15.75pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;DataSet Tipado (wizard)&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:49pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15.75pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;319478&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15.75pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;33114&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15.75pt;"&gt;&lt;b&gt;&lt;span style="color:#000000;"&gt;28902&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;i&gt;Fig1: Tabla Comparativa de Bytes en Memoria&lt;/i&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIV09.png"&gt;&lt;img border="0" width="500" src="http://msmvps.com/blogs/cwalzer/AP/APIV09.png" height="300" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;i&gt;Fig2: Bytes en memoria para 290 registros&lt;/i&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIV010.png"&gt;&lt;img border="0" width="500" src="http://msmvps.com/blogs/cwalzer/AP/APIV010.png" height="300" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;i&gt;Fig3: Bytes en memoria de 10 y 1 registro.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" style="MARGIN-LEFT:-0.9pt;WIDTH:291pt;BORDER-COLLAPSE:collapse;" class="MsoNormalTable"&gt;

&lt;tr style="height:15pt;"&gt;
&lt;td style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:windowtext 1pt solid;PADDING-LEFT:5.4pt;BACKGROUND:#4f81bd 0% 50%;PADDING-BOTTOM:0in;BORDER-LEFT:windowtext 1pt solid;WIDTH:146pt;PADDING-TOP:0in;BORDER-BOTTOM:windowtext 1pt solid;HEIGHT:15pt;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;b&gt;&lt;span&gt;Referencias&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:windowtext 1pt solid;PADDING-LEFT:5.4pt;BACKGROUND:#4f81bd 0% 50%;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:49pt;PADDING-TOP:0in;BORDER-BOTTOM:windowtext 1pt solid;HEIGHT:15pt;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;b&gt;&lt;span&gt;290 reg&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:windowtext 1pt solid;PADDING-LEFT:5.4pt;BACKGROUND:#4f81bd 0% 50%;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:windowtext 1pt solid;HEIGHT:15pt;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;b&gt;&lt;span&gt;10 reg&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:windowtext 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:windowtext 1pt solid;PADDING-LEFT:5.4pt;BACKGROUND:#4f81bd 0% 50%;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:windowtext 1pt solid;HEIGHT:15pt;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;b&gt;&lt;span&gt;1 reg&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:15pt;"&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:1pt solid;WIDTH:146pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span&gt;DataSet&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:49pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span&gt;3581&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span&gt;213&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span&gt;105&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:15pt;"&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:1pt solid;WIDTH:146pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span&gt;DataTable&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:49pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span&gt;3574&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span&gt;206&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span&gt;98&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:15pt;"&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:1pt solid;WIDTH:146pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span&gt;List&amp;lt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:49pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span&gt;3477&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span&gt;122&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15pt;"&gt;&lt;b&gt;&lt;span&gt;13&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height:15.75pt;"&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:1pt solid;WIDTH:146pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15.75pt;"&gt;&lt;b&gt;&lt;span&gt;DataSet Tipado (wizard)&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:49pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15.75pt;"&gt;&lt;b&gt;&lt;span&gt;3788&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15.75pt;"&gt;&lt;b&gt;&lt;span&gt;300&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT:1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:medium none;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;WIDTH:48pt;PADDING-TOP:0in;BORDER-BOTTOM:1pt solid;HEIGHT:15.75pt;"&gt;&lt;b&gt;&lt;span&gt;192&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;p&gt;&lt;i&gt;Fig4: Tabla Comparativa de Objetos Referenciados&lt;/i&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIV011.png"&gt;&lt;img border="0" width="502" src="http://msmvps.com/blogs/cwalzer/AP/APIV011.png" height="300" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;i&gt;Fig5: Instancias referenciadas para 290 registros&lt;/i&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIV012.png"&gt;&lt;img border="0" width="500" src="http://msmvps.com/blogs/cwalzer/AP/APIV012.png" height="300" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;i&gt;Fig6: Instancias referenciadas para 10 y 1 registro&lt;/i&gt; &lt;/p&gt;
&lt;p&gt;Estos gr&amp;aacute;ficos muestran claramente que la t&amp;eacute;cnica m&amp;aacute;s econ&amp;oacute;mica es pasar entre capas una lista gen&amp;eacute;rica de un tipo espec&amp;iacute;fico. Y que la ferreter&amp;iacute;a utilizada por las estructuras del tipo DataSet se puede despreciar cuanto mayor es el volumen que contienen. &lt;/p&gt;
&lt;h3&gt;Conclusi&amp;oacute;n&lt;/h3&gt;
&lt;p&gt;Hemos comprobado que el uso correcto de las t&amp;eacute;cnicas de acceso a datos en ADO.NET nos permite lograr un mayor rendimiento en nuestras aplicaciones. Tambi&amp;eacute;n hemos aprendido algo de c&amp;oacute;mo funciona internamente ADO.NET, y como son las estructuras en memoria y el uso que se hace de ellas. &lt;/p&gt;
&lt;p&gt;Siempre es bueno conocer c&amp;oacute;mo funcionan internamente los frameworks que utilizamos para construir nuestras aplicaciones para poner en la balanza, facilidad y agilidad de uso contra rendimiento y consumo de recursos.&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2008/05/21/performance_5F00_memoria_5F00_ado_5F00_net.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1608472" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Anti+Practicas/default.aspx">Anti Practicas</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Cazador+de+Mitos+.NET/default.aspx">Cazador de Mitos .NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Rendimiento/default.aspx">Rendimiento</category></item><item><title>Anti Prácticas .NET: Lectura de Datos con ADO.NET III</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/11/12/antipracticaslecturadatosnet3.aspx</link><pubDate>Mon, 12 Nov 2007 17:26:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1304246</guid><dc:creator>cwalzer</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1304246</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/11/12/antipracticaslecturadatosnet3.aspx#comments</comments><description>&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Esta es la &amp;uacute;ltima entrega de esta zaga. En este art&amp;iacute;culo har&amp;eacute; un resumen de lo investigado, las mejoras que hemos encontrado para mejorar el rendimiento de Lectura de Datos con ADO.NET, y haremos algunos gr&amp;aacute;ficos comparativos que siempre ayudan a visualizar mejor la comparaci&amp;oacute;n.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Este art&amp;iacute;culo es una continuaci&amp;oacute;n de los art&amp;iacute;culos anteriores:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;color:#800080;font-family:Calibri;"&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/archive/2007/09/24/anti-pr-225-cticas-i-acceso-a-datos-con-ado-net.aspx"&gt;Anti Pr&amp;aacute;cticas .NET: Lectura de Datos con ADO.NET&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/archive/2007/10/30/antipracticasnetlecturaadonet2.aspx"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;color:#800080;font-family:Calibri;"&gt;Anti Pr&amp;aacute;cticas .NET: Lectura de Datos con ADO.NET&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt; II&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Presentaci&amp;oacute;n del escenario&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Este es el contexto en el que estoy haciendo las mediciones:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Una aplicaci&amp;oacute;n Windows Forms, que utiliza 4 mecanismos para recuperar datos &amp;ldquo;de solo lectura&amp;rdquo; de la base de datos AdvertureWorks alojada en SQL Server 2005:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;DataReader cargado en una lista gen&amp;eacute;rica de objetos de entidad&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;DataSet&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;DataTable&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Dataset tipificado creado con el asistente de Visual Studio 2005&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Aqu&amp;iacute; subrayo &amp;ldquo;&lt;span style="text-decoration:underline;"&gt;solo lectura&lt;/span&gt;&amp;rdquo; porque, justamente solo quiero recuperar los datos, y no hacer ninguna operaci&amp;oacute;n sobre ellos.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;En realidad las 3 primeras t&amp;eacute;cnicas fueron descriptas en los art&amp;iacute;culos anteriores.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;En este se agrega la carga del DataSet tipificado. Por lo menos mi experiencia me dice que los Asistentes crean c&amp;oacute;digo no muy optimizado que digamos.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;As&amp;iacute; que llamemos de nuevo al &amp;ldquo;&lt;b style="mso-bidi-font-weight:normal;"&gt;Cazador de Mitos .NET&lt;/b&gt;&amp;rdquo;, que nos dir&amp;aacute;:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Vamos a la caza del mito: &amp;ldquo;&lt;b style="mso-bidi-font-weight:normal;"&gt;El c&amp;oacute;digo generado por un asistente no desempe&amp;ntilde;a un buen rendimiento&lt;/b&gt;&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;El C&amp;oacute;digo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;La versi&amp;oacute;n completa del c&amp;oacute;digo podr&amp;aacute;s &lt;a href="http://msmvps.com/blogs/cwalzer/Posts/AntiPrac/CarlosWalzer_AntiPracIII.zip"&gt;bajarla de aqu&amp;iacute;&lt;/a&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;De todas formas d&amp;eacute;mosle un vistazo:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Esta es la sentencia sql a ejecutar en la base de datos AdventureWorks:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Select &lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;HumanResources.Employee.EmployeeID, Person.Contact.FirstName&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Person.Contact.MiddleName, Person.Contact.LastName,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;HumanResources.Employee.Title, HumanResources.Employee.BirthDate,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Person.Address.AddressLine1, Person.Address.AddressLine2,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Person.Address.City, Person.Address.PostalCode, Person.Contact.EmailAddress,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Person.Contact.Phone, HumanResources.Employee.MaritalStatus, HumanResources.Employee.Gender&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;FROM &lt;/span&gt;HumanResources.Employee&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;INNER JOIN &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Person.Contact&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON &lt;/span&gt;HumanResources.Employee.ContactID = Person.Contact.ContactID&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;INNER JOIN &lt;/span&gt;HumanResources.EmployeeAddress&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON &lt;/span&gt;HumanResources.Employee.EmployeeID = HumanResources.EmployeeAddress.EmployeeID&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;INNER JOIN &lt;/span&gt;Person.Address&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON &lt;/span&gt;HumanResources.EmployeeAddress.AddressID = Person.Address.AddressID&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;AND &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;HumanResources.EmployeeAddress.AddressID = Person.Address.AddressID&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;El DataSet tipificado fue creado arrastrando la consulta SQL sobre la superficie de dise&amp;ntilde;o del DataSet, lo &amp;uacute;nico que escrib&amp;iacute; fue las siguientes l&amp;iacute;neas para cargar el DataSet tipificado:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;private&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; button1_Click(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DsEmployees&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;.&lt;span style="color:#2b91af;"&gt;GetEmployeesDataTable&lt;/span&gt; dsEmployees;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DsEmployeesTableAdapters.&lt;span style="color:#2b91af;"&gt;GetEmployeesTableAdapter&lt;/span&gt; da = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DsEmployeesTableAdapters.&lt;span style="color:#2b91af;"&gt;GetEmployeesTableAdapter&lt;/span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;dsEmployees = da.GetData();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Lectura del DataSet tipificado&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Vamos a medir el tiempo que consume la carga del DataSet tipificado. Para ello recordemos que la consulta devuelve 290 regitros y que la ejecuto 10 veces.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIII001.png"&gt;&lt;img border="0" width="886" src="http://msmvps.com/blogs/cwalzer/AP/APIII001.png" height="519" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;El tiempo consumido es de 7618,5 ms. Recuerda que la lectura anterior del DataSet era 2386 ms, para el DataTable 2369 ms y para el List&amp;lt;&amp;gt; 1883 ms.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Creo que realmente no vale la pena hacer un estudio para saber internamente d&amp;oacute;nde est&amp;aacute; el mayor consumo, puesto que el uso de asistentes nunca fue una pr&amp;aacute;ctica recomendada.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;&amp;iexcl;Mito cazado! &lt;/span&gt;&lt;span style="font-family:Wingdings;mso-ascii-font-family:Cambria;mso-ascii-theme-font:major-latin;mso-hansi-font-family:Cambria;mso-hansi-theme-font:major-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Cambria;"&gt;. El c&amp;oacute;digo generado por un asistente no desempe&amp;ntilde;a un buen rendimiento.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Comparaci&amp;oacute;n de resultados&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Veamos una serie de gr&amp;aacute;ficos que resumen las lecturas realizadas.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Tom&amp;eacute; lecturas de 290 registros, 10 registros (que es el t&amp;iacute;pico caso del tama&amp;ntilde;o de una p&amp;aacute;gina cuando se realiza paginaci&amp;oacute;n) y 1 registro.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/AP/APIII001.png"&gt;&lt;/a&gt;&amp;nbsp;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;img border="0" width="487" src="http://msmvps.com/blogs/cwalzer/AP/APIII002.png" height="101" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Fig1: Tabla Comparativa&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;img border="0" src="http://msmvps.com/blogs/cwalzer/AP/APIII003.png" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Fig2: Lectura de 290 registros&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt; &lt;/p&gt;
&lt;p&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;img border="0" src="http://msmvps.com/blogs/cwalzer/AP/APIII004.png" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Fig3: Lectura de 10 y 1 registro.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Estos gr&amp;aacute;ficos muestran claramente que la t&amp;eacute;cnica m&amp;aacute;s r&amp;aacute;pida es la carga de una lista gen&amp;eacute;rica List&amp;lt;&amp;gt; de objetos de Entidades; t&amp;eacute;cnica utilizada en capas de acceso a datos DALs (Data Access Layers), y la encontraremos por varios sitios como mejor pr&amp;aacute;ctica.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Resumen de las mejoras realizadas&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;La primera mejora realizada fue respecto de la carga de un DataTable. En ese caso hab&amp;iacute;amos detectado que la carga de un DataTable StandAlone era m&amp;aacute;s lento que la de un DataSet. Para mejorar el tiempo hab&amp;iacute;amos reemplazado la llamada DataTable.Load() por el uso de un DataAdapter.Fill(dataTable). El DataAdapter est&amp;aacute; optimizado para solo lectura de manera predeterminada.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;La segunda mejora tiene que ver con la carga del List&amp;lt;&amp;gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;All&amp;iacute; hab&amp;iacute;amos detectado que llamadas a GetOrdinal() dentro del bucle que pod&amp;iacute;an obviarse, justamente obteniendo el ordinal de la columna antes de lanzar el bucle. Y la otra mejora era obtener todos los valores de la columnas de una fila con el m&amp;eacute;todo GetValues(vector), y luego tomar los datos del vector.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;LINQ to SQL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Me hubiese gustado poder comparar en esta serie de art&amp;iacute;culos el uso de LINQ to SQL y Entity Data Framework, pero no ser&amp;iacute;a muy preciso hacerlo con un c&amp;oacute;digo beta.&amp;nbsp;Como dec&amp;iacute;a no podemos comparar, pero si ver que es lo m&amp;aacute;s optimo dentro de LINQ to SQL. Para ello, te recomiendo un art&amp;iacute;culo del maestro&amp;nbsp;&lt;a href="http://blogs.solidq.com/ES/dseara/Lists/Posts/Post.aspx?ID=47"&gt;Daniel Seara&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Conclusi&amp;oacute;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Hemos comprobado que el uso correcto de las t&amp;eacute;cnicas de acceso a datos en ADO.NET nos permite lograr un mayor rendimiento en nuestras aplicaciones.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Tambi&amp;eacute;n hemos aprendido algo de c&amp;oacute;mo funciona internamente ADO.NET, ejercicio que nos va a servir para tomar buenas decisiones al momento de elegir nuestra estrategia de acceso a datos.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;La pr&amp;oacute;xima entrega tendr&amp;aacute; que ver con el consumo de memoria que est&amp;aacute;s t&amp;eacute;cnicas hacen.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2007/11/12/antipracticaslecturadatosnet3.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1304246" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Anti+Practicas/default.aspx">Anti Practicas</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Cazador+de+Mitos+.NET/default.aspx">Cazador de Mitos .NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Rendimiento/default.aspx">Rendimiento</category></item><item><title>Anti Prácticas .NET: Lectura de Datos con ADO.NET II</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/10/30/antipracticasnetlecturaadonet2.aspx</link><pubDate>Tue, 30 Oct 2007 10:21:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1274542</guid><dc:creator>cwalzer</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1274542</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/10/30/antipracticasnetlecturaadonet2.aspx#comments</comments><description>&lt;h1 style="MARGIN:24pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:large;"&gt;&lt;span style="color:#365f91;"&gt;&lt;span style="font-family:Cambria;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Dada la sugerencia de &lt;/span&gt;&lt;/span&gt;&lt;a href="http://geeks.ms/blogs/sergiotarrillo" title="Sergio Tarrillo"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Sergio Tarrillo&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;, en este art&amp;iacute;culo mediremos la lectura de datos de una base de datos con ADO.NET, incluyendo la carga de una lista gen&amp;eacute;rica List&amp;lt;&amp;gt; de objetos de entidad.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Este art&amp;iacute;culo es una continuaci&amp;oacute;n del art&amp;iacute;culo anterior &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/09/24/anti-pr-225-cticas-i-acceso-a-datos-con-ado-net.aspx"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;color:#800080;font-family:Calibri;"&gt;Anti Pr&amp;aacute;cticas .NET: Lectura de Datos con ADO.NET&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Presentaci&amp;oacute;n del escenario&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Este es el contexto en el que estoy haciendo las mediciones:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Una aplicaci&amp;oacute;n Windows Forms, que utiliza 3 mecanismos para recuperar datos &amp;ldquo;de solo lectura&amp;rdquo; de la base de datos AdvertureWorks alojada en SQL Server 2005:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;DataReader cargado en una lista gen&amp;eacute;rica de objetos de entidad&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;DataSet&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;DataTable&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Aqu&amp;iacute; subrayo &amp;ldquo;&lt;span style="text-decoration:underline;"&gt;solo lectura&lt;/span&gt;&amp;rdquo; porque, justamente solo quiero recuperar los datos, y no hacer ninguna operaci&amp;oacute;n sobre ellos.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;El C&amp;oacute;digo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;La versi&amp;oacute;n completa del c&amp;oacute;digo podr&amp;aacute;s &lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/Posts/AntiPrac/CarlosWalzer_AntiPracII.zip"&gt;bajarla de aqu&amp;iacute;&lt;/a&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;De todas formas d&amp;eacute;mosle un vistazo:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Esta es la sentencia sql a ejecutar en la base de datos AdventureWorks:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;br /&gt;Select &lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;HumanResources.Employee.EmployeeID, Person.Contact.FirstName&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Person.Contact.MiddleName, Person.Contact.LastName,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;HumanResources.Employee.Title, HumanResources.Employee.BirthDate,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Person.Address.AddressLine1, Person.Address.AddressLine2,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Person.Address.City, Person.Address.PostalCode, Person.Contact.EmailAddress,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Person.Contact.Phone, HumanResources.Employee.MaritalStatus, HumanResources.Employee.Gender&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;FROM &lt;/span&gt;HumanResources.Employee&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;INNER JOIN &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Person.Contact&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON &lt;/span&gt;HumanResources.Employee.ContactID = Person.Contact.ContactID&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;INNER JOIN &lt;/span&gt;HumanResources.EmployeeAddress&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON &lt;/span&gt;HumanResources.Employee.EmployeeID = HumanResources.EmployeeAddress.EmployeeID&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;INNER JOIN &lt;/span&gt;Person.Address&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON &lt;/span&gt;HumanResources.EmployeeAddress.AddressID = Person.Address.AddressID&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;AND &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;HumanResources.EmployeeAddress.AddressID = Person.Address.AddressID&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;LINE-HEIGHT:115%;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;y &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;la clase DataAccess:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;namespace&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; Walzer.Antipracticas&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataAccess&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;readonly&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; _connString;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;readonly&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; _sqlCmd;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; DataAccess()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_connString = &lt;span style="color:#a31515;"&gt;&amp;quot;Password=;User ID=;Initial Catalog=AdventureWorks;Data Source=WALZER3&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//Obtengo la sentencia SQL que est&amp;aacute; en el archivo de texto Consulta.sql&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;StreamReader&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; sr = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;StreamReader&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Assembly&lt;/span&gt;.GetExecutingAssembly().GetManifestResourceStream(&lt;span style="color:#a31515;"&gt;&amp;quot;Walzer.Antipracticas.Consulta.sql&amp;quot;&lt;/span&gt;));&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_sqlCmd = sr.ReadToEnd();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataSet&lt;/span&gt; TraerDataSet()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DataSet&lt;/span&gt; ds = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;try&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;SqlConnection&lt;/span&gt; conn = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlConnection&lt;/span&gt;(_connString))&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;conn.Open();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;SqlCommand&lt;/span&gt; cmd = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlCommand&lt;/span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.CommandText = _sqlCmd;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.Connection = conn;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.CommandType = &lt;span style="color:#2b91af;"&gt;CommandType&lt;/span&gt;.Text;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;SqlDataAdapter&lt;/span&gt; da = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlDataAdapter&lt;/span&gt;(cmd);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ds = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataSet&lt;/span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;da.Fill(ds);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;catch &lt;/span&gt;{}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; ds;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;&amp;gt; TraerEmployees()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;&amp;gt; employees = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;try&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;SqlConnection&lt;/span&gt; conn = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlConnection&lt;/span&gt;(_connString))&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;SqlCommand&lt;/span&gt; cmd = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlCommand&lt;/span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.CommandText = _sqlCmd;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.Connection = conn;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.CommandType = &lt;span style="color:#2b91af;"&gt;CommandType&lt;/span&gt;.Text;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;conn.Open();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;SqlDataReader&lt;/span&gt; dr = cmd.ExecuteReader())&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;while&lt;/span&gt; (dr.Read())&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt; employee = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;employee.EmployeeID = &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToInt32(dr[&lt;span style="color:#a31515;"&gt;&amp;quot;EmployeeId&amp;quot;&lt;/span&gt;]);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;employee.FirstName = &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToString(dr[&lt;span style="color:#a31515;"&gt;&amp;quot;FirstName&amp;quot;&lt;/span&gt;]);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;//Por motivos de espacio obvi&amp;eacute; las lineas restantes&amp;hellip;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;employees.Add(employee);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;catch &lt;/span&gt;{}&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; employees;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataTable&lt;/span&gt; TraerDataTableOptimizado()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#008000;"&gt;//Este m&amp;eacute;todo est&amp;aacute; optimizado para cargar un DataTable con datos de SOLO LECTURA&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;DataTable&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; dt = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;try&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;SqlConnection&lt;/span&gt; conn = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlConnection&lt;/span&gt;(_connString))&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;conn.Open();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;SqlCommand&lt;/span&gt; cmd = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlCommand&lt;/span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.CommandText = _sqlCmd;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.Connection = conn;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.CommandType = &lt;span style="color:#2b91af;"&gt;CommandType&lt;/span&gt;.Text;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;SqlDataAdapter&lt;/span&gt; da = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlDataAdapter&lt;/span&gt;(cmd);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;dt = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataTable&lt;/span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;da.Fill(dt);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;catch &lt;/span&gt;{}&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; dt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Comparaci&amp;oacute;n de T&amp;eacute;cnicas&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Lo que primero vamos a medir es el tiempo que consume cada uno de las t&amp;eacute;cnicas de lectura de datos. Para ello recordemos que la consulta devuelve 290 regitros y que ejecuto 10 veces cada m&amp;eacute;todo.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;a target="_blank" href="http://msmvps.com/photos/cwalzer/images/1262269/original.aspx"&gt;&lt;img border="0" width="886" src="http://msmvps.com/photos/cwalzer/images/1262269/original.aspx" height="519" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Podemos observar entonces que no hay mayor diferencia entre las t&amp;eacute;cnicas.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Claro que ya hemos optimizado en el art&amp;iacute;culo anterior la lectura del DataTable.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Optimizaci&amp;oacute;n de la carga de una lista gen&amp;eacute;rica de objetos de entidad con DataReader&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;De todas formas ser&amp;iacute;a bueno revisar el m&amp;eacute;todo TraerEmployees, que carga una List&amp;lt;Employee&amp;gt; para ver si le cabe alguna optimizaci&amp;oacute;n.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;a target="_blank" href="http://msmvps.com/photos/cwalzer/images/1262266/original.aspx"&gt;&lt;img border="0" width="886" src="http://msmvps.com/photos/cwalzer/images/1262266/original.aspx" height="519" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Encontramos aqu&amp;iacute; que tenemos 446 ms. + 74 ms. en 34800 + 5800 invocaciones a GetOrdinal() debido a la forma en que recuperamos el valor de la columna &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;dr[&lt;span style="color:#a31515;"&gt;&amp;quot;nombreCampo&amp;quot;&lt;/span&gt;]&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;. GetOrdinal devuelve la posici&amp;oacute;n de la columna para ese nombre campo, y esto es muy conveniente.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;No es recomendable reemplazar el nombre de la columna por el n&amp;uacute;mero de la misma al recuperar el dato, ya que cualquier cambio en la consulta SQL invalidar&amp;iacute;a nuestro c&amp;oacute;digo.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Lo que debemos hacer entonces es minimizar la cantidad de llamadas. &lt;/span&gt;Quitemos la invocaciones a GetOrdinal() de adentro del bucle.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;static&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;&amp;gt; TraerEmployeesOptimizado1()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;&amp;gt; employees = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;try&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;SqlConnection&lt;/span&gt; conn = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlConnection&lt;/span&gt;(_connString))&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;SqlCommand&lt;/span&gt; cmd = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlCommand&lt;/span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.CommandText = _sqlCmd;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.Connection = conn;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.CommandType = &lt;span style="color:#2b91af;"&gt;CommandType&lt;/span&gt;.Text;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;conn.Open();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;SqlDataReader&lt;/span&gt; dr = cmd.ExecuteReader())&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; colEmployeeId = dr.GetOrdinal(&lt;span style="color:#a31515;"&gt;&amp;quot;EmployeeId&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; colFirstName = dr.GetOrdinal(&lt;span style="color:#a31515;"&gt;&amp;quot;FirstName&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;//Por motivos de espacio obvi&amp;eacute; las lineas restantes&amp;hellip;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;while&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; (dr.Read())&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt; employee = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;employee.EmployeeID = &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToInt32(dr[colEmployeeId]);&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;employee.FirstName = &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToString(dr[colFirstName]);&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;//Por motivos de espacio obvi&amp;eacute; las lineas restantes&amp;hellip;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;employees.Add(employee);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;catch &lt;/span&gt;{}&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; employees;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Revisemos el profiling de c&amp;oacute;digo del c&amp;oacute;digo optimizado:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;a target="_blank" href="http://msmvps.com/photos/cwalzer/images/1262267/original.aspx"&gt;&lt;img border="0" width="886" src="http://msmvps.com/photos/cwalzer/images/1262267/original.aspx" height="519" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Hemos bajado el tiempo de 2631 ms. a 2132 ms. y reducido las invocaciones a GetOrdinal() a las necesarias: 14 invocaciones -&amp;gt; 14 campos.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;La segunda reducci&amp;oacute;n que podr&amp;iacute;amos hacer corresponde con get_MetaData(), la cual se invoca por registro y por columna. La intenci&amp;oacute;n de minimizar esta llamada es la siguiente: &amp;iquest;Para qu&amp;eacute; leer la &amp;ldquo;metadata&amp;rdquo; una y otra vez si el esquema de los datos no var&amp;iacute;a en un set de resultados de solo lectura como es el DataReader? &amp;iquest;C&amp;oacute;mo podemos hacer para reducir la cantidad de invocaciones?. Bien, mi sugerencia es tratando de reducir las invocaciones a GetValue() que internamente llama a get_MetaData(), reemplaz&amp;aacute;ndola por GetValues(object[]), la cual lee los datos del registro de una vez y devuelve un vector con los resultados.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;static&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;&amp;gt; TraerEmployeesOptimizado2()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;&amp;gt; employees = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;SqlConnection&lt;/span&gt; conn = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlConnection&lt;/span&gt;(_connString))&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;SqlCommand&lt;/span&gt; cmd = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SqlCommand&lt;/span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.CommandText = _sqlCmd;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.Connection = conn;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmd.CommandType = &lt;span style="color:#2b91af;"&gt;CommandType&lt;/span&gt;.Text;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;conn.Open();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;SqlDataReader&lt;/span&gt; dr = cmd.ExecuteReader())&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; colEmployeeId = dr.GetOrdinal(&lt;span style="color:#a31515;"&gt;&amp;quot;EmployeeId&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; colFirstName = dr.GetOrdinal(&lt;span style="color:#a31515;"&gt;&amp;quot;FirstName&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;//Por motivos de espacio obvi&amp;eacute; las lineas restantes&amp;hellip;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; colCount = dr.FieldCount;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;[] values = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;[colCount];&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;while&lt;/span&gt; (dr.Read())&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt; employee = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Employee&lt;/span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;dr.GetValues(values);&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;employee.EmployeeID = &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToInt32(values[colEmployeeId]);&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;employee.FirstName = &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToString(values[colFirstName]);&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;//Por motivos de espacio obvi&amp;eacute; las lineas restantes&amp;hellip;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;employees.Add(employee);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;catch &lt;/span&gt;{}&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; employees;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Si observamos ahora el profiler vemos que las invocaciones a get_MetaData() se hacen por registro y no por columna.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;a target="_blank" href="http://msmvps.com/photos/cwalzer/images/1262268/original.aspx"&gt;&lt;img border="0" width="886" src="http://msmvps.com/photos/cwalzer/images/1262268/original.aspx" height="519" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Con esta segunda optimizaci&amp;oacute;n, hemos logrado reducir el tiempo 2631 ms. a 1883 ms., disminuyendo las invocaciones a get_MetaData() de 4060 a 290. Logramos entonces una reducci&amp;oacute;n del 40%.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Conclusi&amp;oacute;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Hemos comprobado que el uso correcto de las t&amp;eacute;cnicas de acceso a datos en ADO.NET nos permite lograr un mayor rendimiento en nuestras aplicaciones.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Tambi&amp;eacute;n hemos aprendido algo de c&amp;oacute;mo funciona internamente ADO.NET, ejercicio que nos va a servir para tomar buenas decisiones al momento de elegir nuestra estrategia de acceso a datos.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Queda para una tercera entrega ver el costo de acceder a los datos usando los Asistentes de Visual Studio 2005.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;All&amp;iacute; har&amp;eacute; un resumen de lo investigado, para que tengan en cuenta al momento de dise&amp;ntilde;ar su estrategia de acceso a datos.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Continuaci&amp;oacute;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/11/12/antipracticaslecturadatosnet3.aspx"&gt;Parte III&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2007/10/30/antipracticasnetlecturaadonet2.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1274542" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Anti+Practicas/default.aspx">Anti Practicas</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Cazador+de+Mitos+.NET/default.aspx">Cazador de Mitos .NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Rendimiento/default.aspx">Rendimiento</category></item><item><title>MSDN Radio en Vivo: Discusión: Técnicas y Herramientas para Mejorar el Rendimiento de Aplicaciones y Bases de Datos</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/10/26/msdn-radio-en-vivo-discusi-243-n-t-233-cnicas-y-herramientas-para-mejorar-el-rendimiento-de-aplicaciones-y-bases-de-datos.aspx</link><pubDate>Fri, 26 Oct 2007 14:44:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1265488</guid><dc:creator>cwalzer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1265488</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/10/26/msdn-radio-en-vivo-discusi-243-n-t-233-cnicas-y-herramientas-para-mejorar-el-rendimiento-de-aplicaciones-y-bases-de-datos.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:ES;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;Durante el &amp;uacute;ltimo mes los expertos de Solid Quality Mentors han estado discutiendo t&amp;eacute;cnicas para medir y mejorar el rendimiento de las aplicaciones. Durante este show de MSDN Radio &amp;uacute;nase a una discusi&amp;oacute;n en vivo sobre c&amp;oacute;mo optimizar sus aplicaciones, herramientas para medir el rendimiento, mejores t&amp;eacute;cnicas de acceso a datos, tips de optimizaci&amp;oacute;n de c&amp;oacute;digo en SQL Server y c&amp;oacute;mo mejorar el rendimiento de OLAP y Analysis Server.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Te esperamos para que puedas evacuar tus dudas y debatir acerca de como mejorar el rendimiento de tus aplicaciones .NET y bases de datos.&lt;br /&gt;&lt;a target="_blank" href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032357579&amp;amp;EventCategory=4&amp;amp;culture=es-AR&amp;amp;CountryCode=AR"&gt;&lt;strong&gt;http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032357579&amp;amp;EventCategory=4&amp;amp;culture=es-AR&amp;amp;CountryCode=AR&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Aprovecho la oportunidad para invitarlos a que vean el WebCast de Gustavo Larriera sobre el tema:&lt;br /&gt;&lt;a target="_blank" href="http://blogs.solidq.com/ES/glarriera/Lists/Posts/Post.aspx?ID=51"&gt;&lt;strong&gt;T&amp;eacute;cnicas de ajuste de rendimiento en SQL Server 2005&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2007/10/26/msdn-radio-en-vivo-discusi-243-n-t-233-cnicas-y-herramientas-para-mejorar-el-rendimiento-de-aplicaciones-y-bases-de-datos.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1265488" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ADO.NET/default.aspx">ADO.NET</category></item><item><title>Jornada en Bs As: Mejoras de desempeño de aplicaciones .NET</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/10/22/jornada-en-bs-as-mejoras-de-desempe-241-o-de-aplicaciones-net.aspx</link><pubDate>Mon, 22 Oct 2007 17:18:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1258517</guid><dc:creator>cwalzer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1258517</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/10/22/jornada-en-bs-as-mejoras-de-desempe-241-o-de-aplicaciones-net.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;&lt;span id="_ctl0__ctl0__ctl0_Briefdescription1" class="Event_Date"&gt;&lt;span id="_ctl0__ctl0__ctl0_Briefdescription1" class="Event_Date"&gt;Veremos c&amp;oacute;mo detectar y diagnosticar problemas de desempe&amp;ntilde;o y mal uso de la memoria de aplicaciones .NET.&lt;/span&gt;&amp;nbsp;&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span id="_ctl0__ctl0__ctl0_Eventfulldescription1" class="Event_FullDescription"&gt;
&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;&lt;strong&gt;DETALLES DE CONTENIDOS:&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;Uno de los desaf&amp;iacute;os a tener en cuenta a la hora de desarrollar medianas y grandes aplicaciones, es lograr una buen desempe&amp;ntilde;o de las mismas en un ambiente de producci&amp;oacute;n, y la posibilidad de escalabilidad que la misma tenga al presentarse el crecimiento del negocio. Por lo tanto, es importante tener en cuenta estos aspectos en el ciclo de vida de una aplicaci&amp;oacute;n conociendo las t&amp;eacute;cnicas y herramientas disponibles para lograrlo. Veremos c&amp;oacute;mo detectar y diagnosticar problemas de desempe&amp;ntilde;o y mal uso de la memoria de aplicaciones .NET, utilizando t&amp;eacute;cnicas como: lectura de informaci&amp;oacute;n de instrumentaci&amp;oacute;n, profiling de c&amp;oacute;digo, profiling de memoria, depuraci&amp;oacute;n de HTTP, ejecuci&amp;oacute;n de test de carga y stress y Tracing de ASP.NET y SQl Server.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span id="_ctl0__ctl0__ctl0_Eventdate1" class="Event_Date"&gt;&lt;span style="font-family:Verdana;"&gt;Viernes 2 de Noviembre de 2007 de 18.00 a 22.00 hs.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="_ctl0__ctl0__ctl0_Eventlocation1" class="Event_Date"&gt;Lugar: Auditorio MUG - Rivadavia 1479 1&amp;ordm; Piso - Oficina A, Buenos Aires - Argentina&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;a href="http://www.mug.org.ar/Eventos/2828.aspx"&gt;&lt;strong&gt;Registrate&lt;/strong&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2007/10/22/jornada-en-bs-as-mejoras-de-desempe-241-o-de-aplicaciones-net.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1258517" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Capacitacion/default.aspx">Capacitacion</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/VS+Team+Systems/default.aspx">VS Team Systems</category></item><item><title>Capacitación en Línea Gratuita</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/10/19/capacitaci-243-n-en-l-237-nea-gratuita.aspx</link><pubDate>Fri, 19 Oct 2007 20:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1251549</guid><dc:creator>cwalzer</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1251549</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/10/19/capacitaci-243-n-en-l-237-nea-gratuita.aspx#comments</comments><description>&lt;p&gt;En Solid Quality Learning estamos probando&amp;nbsp;una nueva modalidad de cursos en línea, utilizando LiveMeeting 2007, de la misma forma que lo hace Microsoft con sus Webcasts.&lt;/p&gt;
&lt;p&gt;Para poder probar la experiencia, hemos abierto 5 entrenamientos gratuitos de 4 horas de duracion (2 sesiones de 2 horas cada uno).&lt;/p&gt;
&lt;p&gt;Los temas a escoger son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;Mejoras de desempeño de aplicaciones (dictado por Carlos Walzer,&amp;nbsp;el 21 de noviembre)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Opciones para la Administración de Transacciones en .NET Framework y SQL Server (dictado por Adolfo Wiernik el 3 de diciembre)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Bodegas de Datos (Data Warehouse) e Inteligencia de Negocios para DBAs (dictado por Javier Loria&amp;nbsp;el 4 y 6 de diciembre)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Guía Práctica de Optimización de Código de Acceso a Datos en .NET Framework (dictado por Adolfo Wiernik el 6 de diciembre)&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Hemos habilitado solamente 20 cupos por curso por ahora.&lt;/p&gt;
&lt;p&gt;Para inscribirse: &lt;a href="http://learning.solidq.com/la/"&gt;http://learning.solidq.com/la/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1251549" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Capacitacion/default.aspx">Capacitacion</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ADO.NET/default.aspx">ADO.NET</category></item><item><title>Mes de Mejoras de Desempeño en MSDN por Solid Quality Mentors</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/10/18/mes-del-buen-desempeno-en-msdn-por-solid-quality-mentors.aspx</link><pubDate>Thu, 18 Oct 2007 15:04:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1250902</guid><dc:creator>cwalzer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1250902</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/10/18/mes-del-buen-desempeno-en-msdn-por-solid-quality-mentors.aspx#comments</comments><description>&lt;p&gt;En el transcurso de este mes los mentores de Solid Quality Mentors hemos difundido nuestros conocimientos en MSDN Latino América, acerca de las técnicas disponibles para Mejora de Desempeño de aplicaciones Microsoft.&lt;/p&gt;
&lt;p&gt;Aquí podrás encontrar la información del wecast que dí, el mismo está en línea para que lo puedas ver a demanda:&lt;br /&gt;&lt;a class="" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032354007&amp;amp;Culture=es-AR" target="_blank"&gt;&lt;strong&gt;Herramientas para mejorar el desempeño de las aplicaciones .NET Framework&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Material relacionado con este webcast:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;&lt;a class="" href="http://blogs.solidq.com/ES/cwalzer/Recursos/WebCast_HerrMejoraDesempNET_200710/HerrDesempAppNET.pdf" target="_blank"&gt;&lt;strong&gt;Presentación&lt;/strong&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a class="" href="http://blogs.solidq.com/ES/cwalzer/Recursos/WebCast_HerrMejoraDesempNET_200710/HerrDesempAppNET.zip" target="_blank"&gt;&lt;strong&gt;Ejemplos de código&lt;/strong&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Aquí podrás consultar las otras presentaciones relacionadas con este tema:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;&lt;a class="" href="http://blogs.solidq.com/ES/dseara/Lists/Posts/Post.aspx?ID=38" target="_blank"&gt;¿Hablamos del rendimiento de las aplicaciones?&lt;/a&gt; por Daniel Seara&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a class="" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032355951&amp;amp;Culture=es-AR" target="_blank"&gt;Measuring Performance in ASP.NET Applications&lt;/a&gt; por Eugenio Serrano&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a class="" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032355952&amp;amp;Culture=es-AR" target="_blank"&gt;Techniques for Performance Tuning ADO.NET Data Access Code&lt;/a&gt; por Adolfo Wiernik&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Y como el mes no terminó, aún queda más material por venir&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;script type="text/javascript"&gt;
digg_url = &amp;#39;http://msmvps.com/blogs/cwalzer&amp;#39;;
digg_bgcolor = &amp;#39;#ff9900&amp;#39;;
digg_skin = &amp;#39;compact&amp;#39;;
digg_window = &amp;#39;new&amp;#39;;
&lt;/script&gt;

&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;a href="http://technorati.com/faves?sub=addfavbtn&amp;amp;add=http://msmvps.com/blogs/cwalzer"&gt;&lt;img alt="Agregar a Technorati" src="http://static.technorati.com/pix/fave/btn-fave2.png" border="0" /&gt;&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1250902" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Capacitacion/default.aspx">Capacitacion</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Testing/default.aspx">Testing</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/VS+Team+Systems/default.aspx">VS Team Systems</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ADO.NET/default.aspx">ADO.NET</category></item><item><title>Solid Quality Summit 2007 Chile/Argentina/Brasil</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/10/16/solid-quality-summit-2007-chile-argentina-brasil.aspx</link><pubDate>Tue, 16 Oct 2007 18:40:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1248108</guid><dc:creator>cwalzer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1248108</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/10/16/solid-quality-summit-2007-chile-argentina-brasil.aspx#comments</comments><description>&lt;p&gt;&lt;span id="ctl00_ContentPlaceHolder1_FormView1_descrLabel"&gt;Se está llevando a cabo durante el año 2007 una gira por 9 países visitando 10 ciudades. Es una oportunidad única donde usted podrá escuchar y aprender de los mejores exponentes en Microsoft® SQL Server™ 2005. Contenidos: - Almacenando datos no estructurados o semi-estructurados - Reportes a la carta con el Report Builder - Optimización y Afinamiento de servidores SQL Server - OLAP sin Datawarehouse en SQL Server 2005 Inscríbete ya aqui: &lt;a href="http://learning.solidq.com/la/CourseDetail.aspx?CourseScheduleId=208"&gt;http://learning.solidq.com/la/CourseDetail.aspx?CourseScheduleId=208&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1248108" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Capacitacion/default.aspx">Capacitacion</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Anti Prácticas .NET: Lectura de Datos con ADO.NET</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/09/24/anti-pr-225-cticas-i-acceso-a-datos-con-ado-net.aspx</link><pubDate>Mon, 24 Sep 2007 21:30:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1214042</guid><dc:creator>cwalzer</dc:creator><slash:comments>14</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1214042</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/09/24/anti-pr-225-cticas-i-acceso-a-datos-con-ado-net.aspx#comments</comments><description>&lt;p&gt;Estoy inaugurando secci&amp;oacute;n en mi Blog, con la intenci&amp;oacute;n de demostrar el costo que implica una mala codificaci&amp;oacute;n o error de dise&amp;ntilde;o en una aplicaci&amp;oacute;n .NET. Conversando sobre el tema con Adolfo Wiernik me sugiri&amp;oacute; el nombre &amp;quot;&lt;strong&gt;Anti Pr&amp;aacute;cticas .NET&lt;/strong&gt;&amp;quot;. Seguramente en cada una de estas entregas,&amp;nbsp;intentar&amp;eacute; confirmar o desmentir alguna de las leyendas urbanas respecto de .NET,&amp;nbsp;lo cual&amp;nbsp;tendremos merodeando por aqu&amp;iacute; al&amp;nbsp;&amp;quot;&lt;b&gt;Cazador de Mitos .NET&lt;/b&gt;&amp;quot;.&lt;/p&gt;
&lt;p&gt;En esta primera entrega quisiera demostrar cu&amp;aacute;l es el costo al momento de seleccionar la forma de leer datos con ADO.NET.Habremos escuchado infinidad de veces decir: Un &amp;quot;&lt;i&gt;DataReader es m&amp;aacute;s r&amp;aacute;pido que un DataSet&lt;/i&gt;&amp;quot;, o que &amp;quot;&lt;i&gt;el DataTable es m&amp;aacute;s liviano que el DataSet&lt;/i&gt;&amp;quot;. &lt;/p&gt;
&lt;p&gt;Pues vamos entonces a la caza del mito: &lt;b&gt;&amp;quot;El DataReader es el m&amp;eacute;todo m&amp;aacute;s eficiente de lectura de datos&amp;quot;.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;La intenci&amp;oacute;n de este art&amp;iacute;culo es cuantificar el uso de una u otra forma de acceder a los datos.&amp;nbsp; &amp;iquest;Ahora bien, porque nos interesar&amp;iacute;a conocer esto? &amp;iquest;Qu&amp;eacute; tienen que ver estos resultados con mi aplicaci&amp;oacute;n? &amp;iquest;Cu&amp;aacute;ndo debo prestarle atenci&amp;oacute;n al desempe&amp;ntilde;o de mi aplicaci&amp;oacute;n?&amp;nbsp; &amp;iquest;Porque es tan importante hacerlo? Te recomiendo la lectura del &lt;a target="_blank" href="http://blogs.solidq.com/ES/dseara/default.aspx"&gt;Blog de Daniel Seara&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Presentaci&amp;oacute;n del Escenario&lt;/h2&gt;
&lt;p&gt;Este es el contexto en el que estoy haciendo las mediciones:&lt;/p&gt;
&lt;p&gt;Una aplicaci&amp;oacute;n ASP.NET 2.0, que utiliza 3 mecanismos para recuperar datos &amp;quot;de solo lectura&amp;quot; de la base de datos AdvertureWorks alojada en SQL Server 2005:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DataReader&lt;/li&gt;
&lt;li&gt;DataSet&lt;/li&gt;
&lt;li&gt;DataTable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aqu&amp;iacute; subrayo &amp;quot;&lt;span style="text-decoration:underline;"&gt;solo lectura&lt;/span&gt;&amp;quot; porque, justamente solo quiero mostrar los datos.&lt;/p&gt;
&lt;h2&gt;El C&amp;oacute;digo&lt;/h2&gt;
&lt;p&gt;La versi&amp;oacute;n completa del c&amp;oacute;digo podr&amp;aacute;s &lt;a target="_blank" href="http://msmvps.com/blogs/cwalzer/Posts/AntiPrac/CarlosWalzer_AntiPracI.zip"&gt;bajarla de aqu&amp;iacute;&lt;/a&gt;.&amp;nbsp; De todas formas d&amp;eacute;mosle un vistazo:&lt;/p&gt;
&lt;p&gt;Hay una clase DataAccess que ejecuta la misma consulta y que devuelve el resultado en 3 formatos distintos: DataSet, DataReader o DataTable.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;class&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataAccess&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;readonly&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; _connString;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;static&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;readonly&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; _sqlCmd;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;static&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; DataAccess()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _connString = &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Password=permiso;User ID=sa;Initial Catalog=AdventureWorks;Data Source=WALZER3&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sqlCmd = &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;SELECT HumanResources.Employee.EmployeeID, Person.Contact.FirstName, &amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Person.Contact.MiddleName, Person.Contact.LastName, &amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;HumanResources.Employee.Title, HumanResources.Employee.BirthDate, &amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Person.Address.AddressLine1, Person.Address.AddressLine2, &amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Person.Address.City, Person.Address.PostalCode, Person.Contact.EmailAddress, &amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Person.Contact.Phone, HumanResources.Employee.MaritalStatus, HumanResources.Employee.Gender &amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;FROM HumanResources.Employee INNER JOIN &amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Person.Contact ON HumanResources.Employee.ContactID = Person.Contact.ContactID INNER JOIN &amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;HumanResources.EmployeeAddress ON &amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;HumanResources.Employee.EmployeeID = HumanResources.EmployeeAddress.EmployeeID INNER JOIN &amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Person.Address ON HumanResources.EmployeeAddress.AddressID = Person.Address.AddressID AND &amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;HumanResources.EmployeeAddress.AddressID = Person.Address.AddressID&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;static&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataSet&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; TraerDataSet()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataSet&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; ds = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; (&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; conn = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(_connString))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; conn.Open();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; cmd = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandText = _sqlCmd;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Connection = conn;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandType = &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;CommandType&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Text;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlDataAdapter&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; da = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlDataAdapter&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(cmd);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ds = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataSet&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da.Fill(ds);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;catch&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; ds;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size:x-small;color:#0000ff;"&gt;static&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;IDataReader&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; TraerDataReader()&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlDataReader&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; dr = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; conn = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;try&lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; conn = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(_connString);&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; conn.Open();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; cmd = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandText = _sqlCmd;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Connection = conn;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandType = &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;CommandType&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Text;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;dr = cmd.ExecuteReader(&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;CommandBehavior&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.CloseConnection);&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;catch&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; (conn != &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;)&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; conn.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;throw&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; dr;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataTable&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; TraerDataTable()&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataTable&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; dt = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;try&lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; (&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; conn = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(_connString))&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; conn.Open();&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; cmd = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandText = _sqlCmd;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Connection = conn;cmd.CommandType = &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;CommandType&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Text;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; (&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlDataReader&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; dr = cmd.ExecuteReader())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataTable&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt.Load(dr);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; dt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Luego hay 3 p&amp;aacute;ginas aspx que muestran los datos obtenidos enlazando los datos con un DataRepeater:&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;asp&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;Repeater&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;=&amp;quot;dataReapeater&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;HeaderTemplate&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;table&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#ff0000;"&gt;border&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;tr&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#ff0000;"&gt;bgcolor&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;=&amp;quot;crimson&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;EmployeeID&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;First Name&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;Middle Name&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;Last Name&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;Title&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;Birthdate&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;Adress Line 1&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;Adress Line 2&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;City&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;Zip&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;Email&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;Phone&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;MaritalStatus&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;Gender&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;th&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;tr&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;HeaderTemplate&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;ItemTemplate&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;tr&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;EmployeeId&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;FirstName&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;MiddleName&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;LastName&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Birthdate&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;AddressLine1&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;AddressLine2&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;)%&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;City&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;PostalCode&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;EmailAddress&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Phone&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;MaritalStatus&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;#&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataBinder&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Eval(Container.DataItem, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;Gender&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) %&amp;gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;tr&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;ItemTemplate&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;FooterTemplate&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;table&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;FooterTemplate&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;asp&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;Repeater&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt; &lt;span style="font-size:x-small;color:#0000ff;"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
Y este es el c&amp;oacute;digo correspondiente al PageLoad de cada p&amp;aacute;gina aspx:&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TraerDataSet.aspx&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;span style="font-size:x-small;color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;partial&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;class&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;TraerDataSet&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; : System.Web.UI.&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Page&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; Page_Load(&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;object&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; sender, &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;EventArgs&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MostrarDataSet();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; MostrarDataSet()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataReapeater.DataSource = &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataAccess&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.TraerDataSet().Tables[0];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataReapeater.DataBind();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TraerDataReader.aspx&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;span style="font-size:x-small;color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;partial&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;class&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;TraerDataReader&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; : System.Web.UI.&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;Page&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; Page_Load(&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;object&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; sender, &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;EventArgs&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MostrarDataReader();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; MostrarDataReader()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; (&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;IDataReader&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; dr = &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataAccess&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.TraerDataReader())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataReapeater.DataSource = dr;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataReapeater.DataBind();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;TraerDataTable.aspx&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;br /&gt;public&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;partial&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;class&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; TraerDataTable : System.Web.UI.Page&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; Page_Load(&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;object&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; sender, &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;EventArgs&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MostrarDataTable();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; MostrarDataTable()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataReapeater.DataSource = DataAccess.TraerDataTable();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataReapeater.DataBind();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Como ver&amp;aacute;s la prueba es sencilla y el c&amp;oacute;digo est&amp;aacute; centrado en la recuperaci&amp;oacute;n de los datos, y no en la forma en que esos datos se muestran.&amp;nbsp; Claro que es una parte muy importante tambi&amp;eacute;n, para conocer c&amp;oacute;mo hacerlo en ASP.NET te recomiendo el &lt;a target="_blank" href="http://blogs.solidq.com/ES/eserrano/default.aspx"&gt;Blog de Eugenio Serrano&lt;/a&gt;.&lt;/p&gt;
&lt;/p&gt;
&lt;h2&gt;Primeras Lecturas&lt;/h2&gt;
&lt;p&gt;Lo que primero vamos a medir es el tiempo que se toma cada una estas operaciones para mostrar los datos.&amp;nbsp; Para ello utilic&amp;eacute; la herramienta &lt;a target="_blank" href="http://www.jetbrains.com/profiler/"&gt;JetBrains DotTrace 3.0&lt;/a&gt;. Esta herramienta te permite mediante la t&amp;eacute;cnica de &amp;quot;code profiling&amp;quot; conocer el tiempo y cantidad de veces de cada una de las llamadas a los m&amp;eacute;todos de tu aplicaci&amp;oacute;n, incluido el c&amp;oacute;digo de .NET.&lt;/p&gt;
&lt;p&gt;Observemos entonces el tiempo consumido durante 5 llamadas de cada una de los m&amp;eacute;todos que acceden y muestran los datos. A prop&amp;oacute;sito, la consulta devuelve 232 registros.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/photos/cwalzer/images/1221466/original.aspx"&gt;&lt;img border="0" src="http://msmvps.com/photos/cwalzer/images/1221466/original.aspx" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mirando los recuadros rojos podremos observar que recuperar los datos con DataReader es lo m&amp;aacute;s r&amp;aacute;pido: 24% m&amp;aacute;s r&amp;aacute;pido que hacerlo con DataSet y 33% m&amp;aacute;s r&amp;aacute;pido que con DataTable.&lt;/p&gt;
&lt;p&gt;Sin embargo si miramos los n&amp;uacute;meros de la clase DataAccess (recuadro verde), no guardan relaci&amp;oacute;n con la vista anterior.&amp;nbsp; El m&amp;eacute;todo TraerDataReader consume un tiempo irrisorio frente a los otros.&amp;nbsp; Como bien me apunt&amp;oacute; &lt;a target="_blank" href="http://blogs.solidq.com/ES/jloria/default.aspx"&gt;Javier Lor&amp;iacute;a&lt;/a&gt;, hasta ese momento (en el cual el DataReader es devuelto por el m&amp;eacute;todo), solo hemos abierto la conexi&amp;oacute;n con las base de datos y enviado el comando sql, y hasta tanto no hayamos mostrado los datos, el cursor no se ha movido del BOF. Distinto es el caso del TraerDataSet o el TraerDataTable, en el cual, para poder pasarse entre capas levantan los datos de la base de datos y se desconectan.&lt;/p&gt;
&lt;p&gt;Con lo cual podemos sacar 2 conclusiones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El DataReader no es un objeto para pasar entre capas.&lt;/li&gt;
&lt;li&gt;Si solo queremos mostrar los datos con el DataSet o el DataTable, los habremos recorridos 2 veces, una vez para cargarlos en memoria y la segunda para mostrarlos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claro que no siempre podemos decidir solo en funci&amp;oacute;n del mejor desempe&amp;ntilde;o.&amp;nbsp; &amp;iquest;Cu&amp;aacute;l es la forma apropiada de utilizar ADO.NET en una capa de acceso a datos?, lo puedes leer en el &lt;a target="_blank" href="http://awiernik.blogspot.com/"&gt;Blog de Adolfo Wiernik&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;&amp;iexcl;Mito cazado! El DataReader es el m&amp;eacute;todo m&amp;aacute;s eficiente de lectura de datos.&lt;/h2&gt;
&lt;p&gt;Pero lo del DataTable no tiene una explicaci&amp;oacute;n muy l&amp;oacute;gica. Recuperar el DataTable, en este caso, es 2 veces m&amp;aacute;s lento que el DataSet. Pong&amp;aacute;monos a investigarlo.&lt;br /&gt;Miremos ahora el enlace a los datos:&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/photos/cwalzer/images/1221467/original.aspx"&gt;&lt;img border="0" src="http://msmvps.com/photos/cwalzer/images/1221467/original.aspx" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Esta vista muestra el tiempo consumido por el m&amp;eacute;todo System.Web.UI.WebControls.Repeater.DataBind() y quien lo ha invocado. Si observamos veremos que los tiempos son similares, las diferencias son despreciables. Aqu&amp;iacute; no est&amp;aacute; la diferencia...&lt;/p&gt;
&lt;h2&gt;Estudio interno de las formas de acceso a los datos&lt;/h2&gt;
&lt;p&gt;Veamos ahora como se consume el tiempo en cada uno de nuestros m&amp;eacute;todos de acceso a datos:&lt;/p&gt;
&lt;h3&gt;MostrarDataReader()&lt;/h3&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/photos/cwalzer/images/1221468/original.aspx"&gt;&lt;img border="0" src="http://msmvps.com/photos/cwalzer/images/1221468/original.aspx" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En esta vista podemos observar el tiempo de las invocaciones realizadas dentro el m&amp;eacute;todo y el tiempo consumido por cada una de ellas.&lt;br /&gt;El 97% del tiempo lo ha consumido System.Web.UI.WebControls.Repeater.DataBind(), o sea recorrer los datos con el cursor de solo lectura y avance y mostrarlos. El resto se va en System.Data.SqlClient.SqlCommand.ExecuteReader(), que comprende la apertura de la conexi&amp;oacute;n y el env&amp;iacute;o del comando a la base de datos.&lt;/p&gt;
&lt;h3&gt;MostrarDataSet()&lt;/h3&gt;
&lt;p&gt;Observemos ahora el m&amp;eacute;todo que devuelve el DataSet, que nos servir&amp;aacute; para entender c&amp;oacute;mo trabaja ADO.NET por dentro.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/photos/cwalzer/images/1221469/original.aspx"&gt;&lt;img border="0" src="http://msmvps.com/photos/cwalzer/images/1221469/original.aspx" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En el recuadro verde est&amp;aacute; resaltado System.Data.Common.DataAdapter.Fill(), m&amp;eacute;todo privado de la clase DataAdapter que realiza b&amp;aacute;sicamente 2 tareas: leer los datos y cargarlos en la colecci&amp;oacute;n de DataTables del DataSet. &lt;br /&gt;&amp;iquest;Como los lee?, mediante System.Data.Common.DbCommand.ExecuteReader() (recuadro rojo). S&amp;iacute;, internamente utiliza un cursor de solo lectura y avance (DataReader) para recuperar los datos. Y de paso vale la pena destacar que esa llamada consumi&amp;oacute; lo mismo (87 ms) que la llamada realizada en TraerDataReader() (87 ms). Entonces, &amp;iquest;donde est&amp;aacute; la diferencia en tiempo?, en el m&amp;eacute;todo System.Data.Common.DataAdapter.FillFromReader() que consumi&amp;oacute; 1164 ms. Este m&amp;eacute;todo es el que se encarga de cargar los datos en memoria (DataSet).&lt;/p&gt;
&lt;p&gt;El recuadro azul viene a colaci&amp;oacute;n del estudio que hagamos de TraerDataTable(), que si recuerdas tardaba el doble que TraerDataSet().&lt;/p&gt;
&lt;h3&gt;MostrarDataTable()&lt;/h3&gt;
&lt;p&gt;Trataremos de develar la inc&amp;oacute;gnita de porque, si aparentemente no deber&amp;iacute;a haber diferencia en cargar un DataTable y un DataSet, el primero es 2 veces m&amp;aacute;s lento que el segundo, cuando de hecho un DataSet contiene una colecci&amp;oacute;n de DataTable.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/photos/cwalzer/images/1221470/original.aspx"&gt;&lt;img border="0" src="http://msmvps.com/photos/cwalzer/images/1221470/original.aspx" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Antes que nada veamos que System.Data.Common.DbCommand.ExecuteReader() (recuadro rojo) es el mecanismo interno nuevamente utilizado para recuperar los datos, cuya llamada consumi&amp;oacute; 82 ms al igual que antes. Tambi&amp;eacute;n encontramos el mismo m&amp;eacute;todo System.Data.Common.DataAdapter.FillFromReader() (recuadro azul), pero que esta vez consumi&amp;oacute; 2986 ms, casi el triple del tiempo que en el caso del DataSet. Si revisamos las invocaciones realizadas por FillFromReader() vemos que System.Data.Common.DataAdapter.FillLoadDataRow() est&amp;aacute; presente con el mismo tiempo consumido (1157 ms) en la carga del DataSet y el DataTable. La gran diferencia est&amp;aacute; en las llamadas internas que realiza System.Data.DataTable.EndLoadData() (1607 ms), que como su nombre lo sugiere, realiza unas operaciones luego de que los datos ya est&amp;aacute;n memoria.&amp;nbsp; Veamos de que operaciones estamos hablando (para ello utilic&amp;eacute; la herramienta &lt;a target="_blank" href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector&lt;/a&gt; que permite desensamblar el c&amp;oacute;digo .NET):&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1000a0;"&gt;public&lt;/span&gt; &lt;span style="color:#006018;"&gt;void&lt;/span&gt; &lt;b&gt;&lt;span style="color:#000000;"&gt;EndLoadData&lt;/span&gt;&lt;/b&gt;()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#006018;"&gt;IntPtr&lt;/span&gt; &lt;b&gt;ptr&lt;/b&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#006018;"&gt;Bid&lt;/span&gt;.&lt;span style="color:#006018;"&gt;ScopeEnter&lt;/span&gt;(&lt;span style="color:#1000a0;"&gt;out&lt;/span&gt; &lt;span style="color:#006018;"&gt;ptr&lt;/span&gt;, &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;ds.DataTable.EndLoadData|API&amp;gt; %d#\n&amp;quot;&lt;/span&gt;, &lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;ObjectID&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;if&lt;/span&gt; (&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;inDataLoad&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;if&lt;/span&gt; (&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;loadIndex&lt;/span&gt; != &lt;span style="color:#800000;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;loadIndex&lt;/span&gt;.&lt;span style="color:#006018;"&gt;RemoveRef&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;if&lt;/span&gt; (&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;loadIndexwithOriginalAdded&lt;/span&gt; != &lt;span style="color:#800000;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;loadIndexwithOriginalAdded&lt;/span&gt;.&lt;span style="color:#006018;"&gt;RemoveRef&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;if&lt;/span&gt; (&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;loadIndexwithCurrentDeleted&lt;/span&gt; != &lt;span style="color:#800000;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;loadIndexwithCurrentDeleted&lt;/span&gt;.&lt;span style="color:#006018;"&gt;RemoveRef&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;loadIndex&lt;/span&gt; = &lt;span style="color:#800000;"&gt;null&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;loadIndexwithOriginalAdded&lt;/span&gt; = &lt;span style="color:#800000;"&gt;null&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;loadIndexwithCurrentDeleted&lt;/span&gt; = &lt;span style="color:#800000;"&gt;null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;inDataLoad&lt;/span&gt; = &lt;span style="color:#800000;"&gt;false&lt;/span&gt;; &lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;RestoreIndexEvents&lt;/span&gt;(&lt;span style="color:#800000;"&gt;false&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;if&lt;/span&gt; (&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;DataSet&lt;/span&gt; != &lt;span style="color:#800000;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;DataSet&lt;/span&gt;.&lt;span style="color:#006018;"&gt;EnforceConstraints&lt;/span&gt; = &lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;savedEnforceConstraints&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;EnforceConstraints&lt;/span&gt; = &lt;span style="color:#800000;"&gt;true&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;finally&lt;/span&gt; { &lt;span style="color:#006018;"&gt;Bid&lt;/span&gt;.&lt;span style="color:#006018;"&gt;ScopeLeave&lt;/span&gt;(&lt;span style="color:#1000a0;"&gt;ref&lt;/span&gt; &lt;span style="color:#006018;"&gt;ptr&lt;/span&gt;); }&lt;br /&gt;} &lt;/p&gt;
&lt;p&gt;Analizando esta secci&amp;oacute;n del c&amp;oacute;digo:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;if&lt;/span&gt; (&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;DataSet&lt;/span&gt; != &lt;span style="color:#800000;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;DataSet&lt;/span&gt;.&lt;span style="color:#006018;"&gt;EnforceConstraints&lt;/span&gt; = &lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;savedEnforceConstraints&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;EnforceConstraints&lt;/span&gt; = &lt;span style="color:#800000;"&gt;true&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;vemos que si el objeto DataTable forma parte de un DataSet (this.DataSet) se verifican las restricciones (constraints) si es que la variable privada this.savedEnforceConstraints as&amp;iacute; lo indica, y sin embargo si el DataTable es un objeto aislado (&lt;i&gt;standalone&lt;/i&gt;)&amp;nbsp; que no depende de un DataSet las restricciones se verifican siempre.&amp;nbsp; Es as&amp;iacute; que cuando se asigna true a this.DataSet.EnforceConstraints, se realiza el proceso de verificaci&amp;oacute;n de las restricciones.&amp;nbsp; Volviendo al gr&amp;aacute;fico podr&amp;aacute;s ver las llamadas a System.Data.DataTable.set_EnforceConstrains y las invocaciones internas a System.Data.DataColumn.IsNotAllowDbNullViolated() y System.Data.DataColumn.IsMaxLengthViolated() que ambas consumen el 52% del tiempo total.&lt;/p&gt;
&lt;p&gt;La p&amp;aacute;gina VerPropiedadesColumnas.aspx del ejemplo nos da un indicio. Esta nos muestra las propiedades de los DataColumns del DataSet y del DataTable.&lt;br /&gt;All&amp;iacute; observamos que la propiedad AllowDbNull est&amp;aacute; marcada seg&amp;uacute;n las propiedades de la tabla en la base de datos solo para el DataTable.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;a target="_blank" href="http://msmvps.com/photos/cwalzer/images/1221471/original.aspx"&gt;&lt;img border="0" src="http://msmvps.com/photos/cwalzer/images/1221471/original.aspx" alt="" /&gt;&lt;/a&gt; &amp;nbsp;&lt;br /&gt;&lt;br /&gt;De ah&amp;iacute; se explica entonces las llamadas a System.Data.DataColumn.IsNotAllowDbNullViolated() por ejemplo:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1000a0;"&gt;internal&lt;/span&gt; &lt;span style="color:#006018;"&gt;void&lt;/span&gt; &lt;b&gt;&lt;span style="color:#000000;"&gt;EnableConstraints&lt;/span&gt;&lt;/b&gt;()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#006018;"&gt;IntPtr&lt;/span&gt; &lt;b&gt;ptr&lt;/b&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#006018;"&gt;Bid&lt;/span&gt;.&lt;span style="color:#006018;"&gt;ScopeEnter&lt;/span&gt;(&lt;span style="color:#1000a0;"&gt;out&lt;/span&gt; &lt;span style="color:#006018;"&gt;ptr&lt;/span&gt;, &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;ds.DataSet.EnableConstraints|INFO&amp;gt; %d#\n&amp;quot;&lt;/span&gt;, &lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;ObjectID&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#006018;"&gt;bool&lt;/span&gt; &lt;b&gt;flag&lt;/b&gt; = &lt;span style="color:#800000;"&gt;false&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#006018;"&gt;ConstraintEnumerator&lt;/span&gt; &lt;b&gt;enumerator3&lt;/b&gt; = &lt;span style="color:#1000a0;"&gt;new&lt;/span&gt; &lt;span style="color:#006018;"&gt;ConstraintEnumerator&lt;/span&gt;(&lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;while&lt;/span&gt; (&lt;span style="color:#006018;"&gt;enumerator3&lt;/span&gt;.&lt;span style="color:#006018;"&gt;GetNext&lt;/span&gt;())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#006018;"&gt;Constraint&lt;/span&gt; &lt;b&gt;constraint&lt;/b&gt; = &lt;span style="color:#006018;"&gt;enumerator3&lt;/span&gt;.&lt;span style="color:#006018;"&gt;GetConstraint&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#006018;"&gt;flag&lt;/span&gt; |= &lt;span style="color:#006018;"&gt;constraint&lt;/span&gt;.&lt;span style="color:#006018;"&gt;IsConstraintViolated&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#006018;"&gt;DataTable&lt;/span&gt; &lt;b&gt;table&lt;/b&gt; &lt;span style="color:#1000a0;"&gt;in&lt;/span&gt; &lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;Tables&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#006018;"&gt;DataColumn&lt;/span&gt; &lt;b&gt;column&lt;/b&gt; &lt;span style="color:#1000a0;"&gt;in&lt;/span&gt; &lt;span style="color:#006018;"&gt;table&lt;/span&gt;.&lt;span style="color:#006018;"&gt;Columns&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;if&lt;/span&gt; (!&lt;span style="color:#006018;"&gt;column&lt;/span&gt;.&lt;span style="color:#006018;"&gt;AllowDBNull&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#006018;"&gt;flag&lt;/span&gt; |= &lt;span style="color:#006018;"&gt;column&lt;/span&gt;.&lt;span style="color:#006018;"&gt;IsNotAllowDBNullViolated&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;if&lt;/span&gt; (&lt;span style="color:#006018;"&gt;column&lt;/span&gt;.&lt;span style="color:#006018;"&gt;MaxLength&lt;/span&gt; &amp;gt;= &lt;span style="color:#800000;"&gt;0&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#006018;"&gt;flag&lt;/span&gt; |= &lt;span style="color:#006018;"&gt;column&lt;/span&gt;.&lt;span style="color:#006018;"&gt;IsMaxLengthViolated&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;if&lt;/span&gt; (&lt;span style="color:#006018;"&gt;flag&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1000a0;"&gt;this&lt;/span&gt;.&lt;span style="color:#006018;"&gt;FailedEnableConstraints&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color:#1000a0;"&gt;finally&lt;/span&gt; { &lt;span style="color:#006018;"&gt;Bid&lt;/span&gt;.&lt;span style="color:#006018;"&gt;ScopeLeave&lt;/span&gt;(&lt;span style="color:#1000a0;"&gt;ref&lt;/span&gt; &lt;span style="color:#006018;"&gt;ptr&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;Ahora que conocemos que es lo que realmente sucede tratemos de encontrar una explicaci&amp;oacute;n l&amp;oacute;gica de porque se verifican las restricciones en el caso del&lt;br /&gt;DataTable aislado y no as&amp;iacute; en el DataSet. La respuesta est&amp;aacute; documentada: &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://support.microsoft.com/kb/310373/es"&gt;&lt;strong&gt;El m&amp;eacute;todo DataAdapter.Fill no establece todas las propiedades de los objetos DataTable y DataColumn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;S&amp;iacute;ntomas&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Despu&amp;eacute;s de que utiliza el m&amp;eacute;todo DataAdapter.Fill, no se establecen varias propiedades del DataTable y objetos DataColumn (como clave principal, campos autom&amp;aacute;ticos de incremento, campos anulables, &amp;iacute;ndice &amp;uacute;nico y etc.)&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Causa&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;El objeto DataAdapter est&amp;aacute; optimizado para s&amp;oacute;lo lectura de manera predeterminada. El m&amp;eacute;todo Fill s&amp;oacute;lo recupera la cantidad de esquema que es necesario mostrar los datos. Debe seguir pasos adicionales que obtienen el esquema adicional que es necesario actualizar o validar un objeto.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Soluci&amp;oacute;n&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Para obtener informaci&amp;oacute;n adicional acerca del objeto DataSet, utilice uno de los m&amp;eacute;todos siguientes:&lt;/i&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;Llame al m&amp;eacute;todo DataAdapter.FillSchema para obtener informaci&amp;oacute;n de esquema ampliado. &lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Establezca el valor de DataAdapter.MissingSchemaAction a MissingSchemaAction.AddWithKey antes de llamar al m&amp;eacute;todo Fill&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Optimizaci&amp;oacute;n de lectura de datos con DataTable&lt;/h2&gt;
&lt;p&gt;Pues hagamos caso de lo que el art&amp;iacute;culo dice: el que est&amp;aacute; optimizado para lectura de datos es el m&amp;eacute;todo DataAdapter.Fill(). Veamos que sucede si cargamos el DataTable con este mecanismo.&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;
&lt;p&gt;static&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataTable&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; TraerDataTableOptimizado()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#008000;"&gt;//Este m&amp;eacute;todo est&amp;aacute; optimizado para cargar un DataTable con datos de SOLO LECTURA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataTable&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; dt = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; (&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; conn = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(_connString))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;conn.Open();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; cmd = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandText = _sqlCmd;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Connection = conn;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandType = &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;CommandType&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;.Text;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlDataAdapter&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; da = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;SqlDataAdapter&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;(cmd);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dt = &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;span style="font-size:x-small;color:#2b91af;"&gt;DataTable&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; da.Fill(dt);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;catch&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; dt;&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;a target="_blank" href="http://msmvps.com/photos/cwalzer/images/1221472/original.aspx"&gt;&lt;img border="0" src="http://msmvps.com/photos/cwalzer/images/1221472/original.aspx" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;iexcl;Ahora s&amp;iacute;! el tiempo consumido por la recuperaci&amp;oacute;n del DataTable se asemeja al del DataSet.&lt;/p&gt;
&lt;p&gt;Ahora que ya sabes interpretar los informes del profiler de c&amp;oacute;digo, revisa las llamadas internas de TraerDataTableOptimizado().&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/photos/cwalzer/images/1221473/original.aspx"&gt;&lt;img border="0" src="http://msmvps.com/photos/cwalzer/images/1221473/original.aspx" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Podr&amp;aacute;s apreciar que las llamadas a EndLoadData bajaron del 1607 ms a 0.4. Y este n&amp;uacute;mero podr&amp;iacute;a haber sido m&amp;aacute;s grande si la cantidad de datos registros y columnas fuese mayor.&lt;/p&gt;
&lt;h2&gt;Conclusi&amp;oacute;n&lt;/h2&gt;
&lt;p&gt;Hemos comprobado que el uso correcto de las t&amp;eacute;cnicas de acceso a datos en ADO.NET nos permite lograr un mayor rendimiento en nuestras aplicaciones. &amp;nbsp;Tambi&amp;eacute;n hemos aprendido algo de c&amp;oacute;mo funciona internamente ADO.NET, ejercicio que nos va a servir para tomar buenas decisiones al momento de elegir nuestra estrategia de acceso a datos.&lt;/p&gt;
&lt;h2&gt;Continuaci&amp;oacute;n&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/10/30/antipracticasnetlecturaadonet2.aspx"&gt;Parte II&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/archive/2007/11/12/antipracticaslecturadatosnet3.aspx"&gt;Parte III&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2007/09/24/anti-pr-225-cticas-i-acceso-a-datos-con-ado-net.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1214042" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Anti+Practicas/default.aspx">Anti Practicas</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Cazador+de+Mitos+.NET/default.aspx">Cazador de Mitos .NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Rendimiento/default.aspx">Rendimiento</category></item><item><title>Webcast: Herramientas para mejorar el desempeño de las aplicaciones .NET Framework</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/09/20/webcast-herramientas-para-mejorar-el-desempe-241-o-de-las-aplicaciones-net-framework.aspx</link><pubDate>Thu, 20 Sep 2007 21:58:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1207903</guid><dc:creator>cwalzer</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1207903</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/09/20/webcast-herramientas-para-mejorar-el-desempe-241-o-de-las-aplicaciones-net-framework.aspx#comments</comments><description>&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-ansi-language:ES-CR;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;Los invito a escuchar este webcast que dar&amp;eacute; el Viernes 5 de Octubre 2007.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-ansi-language:ES-CR;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-ansi-language:ES-CR;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;&lt;em&gt;Daremos una recorrida por las herramientas que propone Microsoft para Detectar y Diagnosticar problemas de desempe&amp;ntilde;o y mal uso de la memoria de aplicaciones .NET: Visual Studio 2005 Team System para hacer pruebas de carga y stress sobre sitios ASP.NET. CLR Profiler y Visual Studio 2005 Team System para hacer profiling de c&amp;oacute;digo y de memoria.&amp;nbsp; Fiddler para hacer debugging de HTTP.&amp;nbsp; Todas ellas, en conjunto, son de gran ayuda al momento de mejorar el desempe&amp;ntilde;o de nuestras aplicaciones.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032354007&amp;amp;EventCategory=4&amp;amp;culture=es-AR&amp;amp;CountryCode=AR"&gt;Registrarse&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2007/09/20/webcast-herramientas-para-mejorar-el-desempe-241-o-de-las-aplicaciones-net-framework.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1207903" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Capacitacion/default.aspx">Capacitacion</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Testing/default.aspx">Testing</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/VS+Team+Systems/default.aspx">VS Team Systems</category></item><item><title>El debugging es solo para eso: Depuración</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/09/11/el-debugging-es-solo-para-eso-depuraci-243-n.aspx</link><pubDate>Tue, 11 Sep 2007 16:06:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1186316</guid><dc:creator>cwalzer</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1186316</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/09/11/el-debugging-es-solo-para-eso-depuraci-243-n.aspx#comments</comments><description>&lt;p&gt;Para confirmar lo que mi amigo &lt;a href="http://msmvps.com/blogs/pmackay/default.aspx"&gt;Patrick MacKay&lt;/a&gt; explica en estos 3 art&amp;iacute;culos:&lt;br /&gt;&lt;a href="http://msmvps.com/blogs/pmackay/archive/2007/05/08/post0c.aspx"&gt;&amp;iquest;Por qu&amp;eacute; debo definir &amp;quot;debug=false&amp;quot; en web.config?, Parte I&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msmvps.com/blogs/pmackay/archive/2007/05/23/post0e.aspx"&gt;&amp;iquest;Por qu&amp;eacute; debo definir &amp;quot;debug=false&amp;quot; en web.config?, Parte II&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msmvps.com/blogs/pmackay/archive/2007/07/12/post13.aspx"&gt;&amp;iquest;Por qu&amp;eacute; no debo compilar en modo debug?, Parte III&lt;/a&gt;&lt;br /&gt;,quisiera mostrarles los resultados de la ejecuci&amp;oacute;n de test de stress sobre un sitio ASP.NET compilado en modo debug.&lt;/p&gt;
&lt;p&gt;Me top&amp;eacute; con un caso en el cual el sitio hab&amp;iacute;a sido compilado en modo debug y habilitado &lt;em&gt;debug=true&lt;/em&gt; en el web.config . Claro no me enter&amp;eacute; de esto hasta que me dijeron: &amp;quot;&lt;em&gt;Pusimos a correr la prueba y no anduvo, hay un valor % Time in Jit que est&amp;aacute; muy alto&lt;/em&gt;&amp;quot;. Y efectivamente estaba muy alto:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://msmvps.com/photos/cwalzer/images/1186299/original.aspx" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Noten que el contador &lt;strong&gt;% Time in Jit&lt;/strong&gt; de la categor&amp;iacute;a &lt;strong&gt;.NET CLR JIT&lt;/strong&gt; se mantiene constante durante 3 horas a valores alt&amp;iacute;simos. Los umbrales propuestos por Visual Studio 2005 para este contador son:&lt;br /&gt;&lt;strong&gt;Warning: 25&lt;br /&gt;Critical: 50&lt;br /&gt;&lt;/strong&gt;Seg&amp;uacute;n mi experiencia en una prueba de stress, salvo el primer minuto donde hay picos de hasta 80%, el &lt;strong&gt;valor normal no supera el 1%&lt;/strong&gt;.&lt;br /&gt;Si se fijan la cantidad de Requests/seg que la aplicaci&amp;oacute;n logr&amp;oacute; responder es 0. La aplicaci&amp;oacute;n Web est&amp;aacute; totalmente inhibida.&lt;/p&gt;
&lt;p&gt;Una segunda corrida mas corta tratando de encontrar el problema arroj&amp;oacute; el mismo resultado:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://msmvps.com/photos/cwalzer/images/1186300/original.aspx" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Estas mediciones confirman lo tratado en el art&amp;iacute;culo I, donde Patrick muestra como se sucede la compilaci&amp;oacute;n de un sitio ASP.NET al hacerse una petici&amp;oacute;n. Excelente tratamiento de parte de Patrick al tema.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El debugging es solo para eso: depuraci&amp;oacute;n.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2007/09/11/el-debugging-es-solo-para-eso-depuraci-243-n.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1186316" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category></item></channel></rss>