<?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 : C#</title><link>http://msmvps.com/blogs/cwalzer/archive/tags/C_2300_/default.aspx</link><description>Tags: C#</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Aprovechamiento del área de notificación en Windows 7</title><link>http://msmvps.com/blogs/cwalzer/archive/2009/06/25/area-de-notificacion-windows-7.aspx</link><pubDate>Thu, 25 Jun 2009 18:56:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1696731</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=1696731</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2009/06/25/area-de-notificacion-windows-7.aspx#comments</comments><description>&lt;p&gt;Les dejo el link a mi aporte al programa &lt;a target="_blank" href="http://www.microsoft.com/latam/windows/7x7/"&gt;Windows 7x7&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.mslatam.com/latam/mediacenter/default.aspx?v=bb3907ac-e761-447c-84ce-b3de0c84e5bd"&gt;Aprovechamiento del &amp;aacute;rea de notificaci&amp;oacute;n en Windows 7&lt;/a&gt;&lt;br /&gt;&lt;em&gt;En esta oportunidad quisiera mostrarte como aprovechar la funcionalidad que brinda Windows 7 en temas de interfaz de usuario. &amp;iquest;Como hacemos para que nuestras aplicaciones pueda comunicarse con el usuario en el momento en que&amp;nbsp;&amp;eacute;l no esta interatuando con ellas? Windows 7 propone, en la barra de tareas, una secci&amp;oacute;n que se llama: Area de Notificaciones.....&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.mslatam.com/latam/mediacenter/default.aspx?v=bb3907ac-e761-447c-84ce-b3de0c84e5bd"&gt;&lt;img width="391" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cwalzer.Videos/7838.NotiArea.jpg" height="280" style="vertical-align:middle;border:0;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Recursos adicionales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/es-es/library/aa511448(en-us).aspx"&gt;Notification Area&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/es-es/library/system.windows.forms.notifyicon.aspx"&gt;NotifyIcon Class&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6db1f17f-5f1e-4e54-a331-c32285cdde0c&amp;amp;displaylang=en"&gt;Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: RC (ISO)&lt;br /&gt;&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1696731" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Windows+7/default.aspx">Windows 7</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>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>C# Desarrollo con Visual Studio 2005 [Extracto del Libro]</title><link>http://msmvps.com/blogs/cwalzer/archive/2008/04/12/c-desarrollo-con-visual-studio-2005-extracto-del-libro.aspx</link><pubDate>Sat, 12 Apr 2008 12:39:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1584462</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=1584462</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2008/04/12/c-desarrollo-con-visual-studio-2005-extracto-del-libro.aspx#comments</comments><description>&lt;p&gt;La &lt;a target="_blank" href="http://msmvps.com/controlpanel/blogs/:%20http://www.ediciones-eni.com/?partner=ES10003&amp;amp;xtor=AL-10003"&gt;&lt;strong&gt;Editorial Eni&lt;/strong&gt;&lt;/a&gt; public&amp;oacute;&amp;nbsp;el libro de &lt;a target="_blank" href="http://www.editions-eni.fr/Libros/C--Desarrollo-con-Visual-Studio-2005/.5_93cbd8bd-93f5-4b81-85c1-b1b2a79b732b_c1e438c9-38f4-47b1-b953-c838755dbffa_e4ea762d-30e4-40b4-868c-9d0b4e24bed6_6_0_6782c292-9e0b-46fc-a5f2-1aabff858726.html?partner=ES10003&amp;amp;xtor=AL-10003"&gt;&lt;strong&gt;C# Desarrollo con Visual Studio 2005&lt;/strong&gt;&lt;/a&gt;, el cual traduje y adapt&amp;eacute; del Franc&amp;eacute;s al Espa&amp;ntilde;ol.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.editions-eni.fr/Libros/C--Desarrollo-con-Visual-Studio-2005-Contenido/.20_82734322-4720-4a35-86da-2874562c636b_0_0.pdf?partner=ES10003&amp;amp;xtor=AL-10003"&gt;&lt;strong&gt;Contenido del Libro&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.editions-eni.fr/Libros/C--Desarrollo-con-Visual-Studio-2005-Descargar-los-ejemplos-del-libro-1-05-Mo/.21_313ee960-2fd3-4b55-920b-d52288c0efe2_93cbd8bd-93f5-4b81-85c1-b1b2a79b732b_e4ea762d-30e4-40b4-868c-9d0b4e24bed6_6_0_6782c292-9e0b-46fc-a5f2-1aabff858726_0.zip?partner=ES10003&amp;amp;xtor=AL-10003"&gt;&lt;strong&gt;Descargar los ejemplos del libro (1,05 Mo)&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Aqui podr&amp;aacute;n ver un extracto del libro &lt;a target="_blank" href="http://www.editions-eni.fr/_Download/ed3346c7-67b1-4d9e-b088-28fa8e345f71/C-_(Extracto-del-Libro).pdf?partner=ES10003&amp;amp;xtor=AL-10003"&gt;&lt;strong&gt;Cap&amp;iacute;tulo 7&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;que trata de Windows Forms.&lt;/p&gt;
&lt;p&gt;&lt;img border="0" width="1" src="http://msmvps.com/blogs/cwalzer/ENI/c20052.jpg" height="1" alt="" /&gt;&lt;img border="0" width="194" src="http://msmvps.com/blogs/cwalzer/ENI/c20052.jpg" height="240" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;em&gt;&lt;span style="font-size:small;"&gt;Nota: N&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;o hay un distribuidor en Sudam&amp;eacute;rica, con lo que&amp;nbsp;la editorial recomienda&amp;nbsp;dos opciones:&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;1 )cursar una solicitud de presupuesto a trav&amp;eacute;s de nuestra web (tras lo cual se cotizan los gastos de env&amp;iacute;o, y el cliente acepta o no el pedido)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;2) comprarlo a trav&amp;eacute;s de Celesa, &lt;a target="_blank" href="http://www.celesa.com/"&gt;www.celesa.com&lt;/a&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2008/04/12/c-desarrollo-con-visual-studio-2005-extracto-del-libro.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=1584462" 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/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Libro en Español: C# Desarrollo con Visual Studio 2005</title><link>http://msmvps.com/blogs/cwalzer/archive/2008/04/07/libro-en-espa-241-ol-c-desarrollo-con-visual-studio-2005.aspx</link><pubDate>Mon, 07 Apr 2008 11:15:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1576845</guid><dc:creator>cwalzer</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1576845</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2008/04/07/libro-en-espa-241-ol-c-desarrollo-con-visual-studio-2005.aspx#comments</comments><description>&lt;p&gt;La &lt;a target="_blank" href="http://msmvps.com/controlpanel/blogs/posteditor.aspx/%20http:"&gt;&lt;strong&gt;Editorial Eni&lt;/strong&gt;&lt;/a&gt; public&amp;oacute;&amp;nbsp;el libro de &lt;a target="_blank" href="http://www.editions-eni.fr/Libros/C--Desarrollo-con-Visual-Studio-2005/.5_93cbd8bd-93f5-4b81-85c1-b1b2a79b732b_c1e438c9-38f4-47b1-b953-c838755dbffa_e4ea762d-30e4-40b4-868c-9d0b4e24bed6_6_0_6782c292-9e0b-46fc-a5f2-1aabff858726.html?partner=ES10003&amp;amp;xtor=AL-10003"&gt;&lt;strong&gt;C# Desarrollo con Visual Studio 2005&lt;/strong&gt;&lt;/a&gt;, el cual traduje y adapt&amp;eacute; del Franc&amp;eacute;s al Espa&amp;ntilde;ol.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.editions-eni.fr/Libros/C--Desarrollo-con-Visual-Studio-2005/.5_93cbd8bd-93f5-4b81-85c1-b1b2a79b732b_c1e438c9-38f4-47b1-b953-c838755dbffa_e4ea762d-30e4-40b4-868c-9d0b4e24bed6_6_0_6782c292-9e0b-46fc-a5f2-1aabff858726.html?partner=ES10003&amp;amp;xtor=AL-10003"&gt;&lt;img border="0" width="405" src="http://msmvps.com/blogs/cwalzer/ENI/c20053.jpg" height="500" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="LivreLivreZoneInfosInformation"&gt;Autor : &lt;strong&gt;Herv&amp;eacute; BERTHET&lt;/strong&gt;&lt;/div&gt;
&lt;div class="LivreLivreZoneInfosInformation"&gt;Adaptaci&amp;oacute;n al Espa&amp;ntilde;ol: &lt;strong&gt;Carlos Walzer&lt;/strong&gt;&lt;/div&gt;
&lt;div class="LivreLivreZoneInfosInformation"&gt;Revis&amp;oacute;n T&amp;eacute;cnica: &lt;strong&gt;Guillermo SOM&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="LivreLivreZoneInfosInformation"&gt;&lt;strong&gt;Presentaci&amp;oacute;n&lt;br /&gt;&lt;/strong&gt;Este libro se dirige a desarrolladores, incluso principiantes, que quieren dominar el lenguaje C# (Visual C#). El lector descubrir&amp;aacute; la plataforma de desarrollo Visual Studio 2005, las bases del lenguaje C# (tipos primitivos, instrucciones y palabras clave) as&amp;iacute; como el desarrollo orientado a objetos. Controlar&amp;aacute; las novedades de esta versi&amp;oacute;n (generic, iterator, partial class, nullable type, etc), un conjunto significativo de las clases del Framework que permiten la pr&amp;aacute;ctica de Threads, XML y del desarrollo de componentes. Al abordar tecnolog&amp;iacute;as como el ADO.NET y los Servicios Web, el autor eligi&amp;oacute; deliberadamente ilustrar sus observaciones con esta otra v&amp;iacute;a abierta al desarrollador que representan los Smart Clients, alternativa a los ASP. NET. Esta elecci&amp;oacute;n permitir&amp;aacute; al lector medir la contribuci&amp;oacute;n de las tecnolog&amp;iacute;as ofrecidas por la arquitectura .NET siguiendo al mismo tiempo un planteamiento progresivo en el aprendizaje del lenguaje C#.&lt;/div&gt;
&lt;div class="LivreLivreZoneInfosInformation"&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class="LivreLivreZoneInfosInformation"&gt;&lt;a href="http://www.editions-eni.fr/Libros/C--Desarrollo-con-Visual-Studio-2005/.5_93cbd8bd-93f5-4b81-85c1-b1b2a79b732b_c1e438c9-38f4-47b1-b953-c838755dbffa_e4ea762d-30e4-40b4-868c-9d0b4e24bed6_6_0_6782c292-9e0b-46fc-a5f2-1aabff858726.html?partner=ES10003&amp;amp;xtor=AL-10003"&gt;&lt;strong&gt;M&amp;aacute;s informaci&amp;oacute;n...&lt;/strong&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="LivreLivreZoneInfosInformation"&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;em&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;
&lt;div class="LivreLivreZoneInfosInformation"&gt;&lt;br /&gt;Nota: N&lt;/div&gt;
&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;o hay un distribuidor en Sudam&amp;eacute;rica, con lo que&amp;nbsp;la editorial recomienda&amp;nbsp;dos opciones:&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;div class="LivreLivreZoneInfosInformation"&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;o hay un distribuidor en Sudam&amp;eacute;rica, con lo que&amp;nbsp;la editorial recomienda&amp;nbsp;dos opciones:&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;em&gt;&amp;nbsp;&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;em&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;1 )cursar una solicitud de presupuesto a trav&amp;eacute;s de nuestra web (tras lo cual se cotizan los gastos de env&amp;iacute;o, y el cliente acepta o no el pedido)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:11pt;color:#1f497d;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;2) comprarlo a trav&amp;eacute;s de Celesa, &lt;a target="_blank" href="http://www.celesa.com/"&gt;www.celesa.com&lt;/a&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2008/04/07/libro-en-espa-241-ol-c-desarrollo-con-visual-studio-2005.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=1576845" 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/C_2300_/default.aspx">C#</category></item><item><title>Clonación de objetos de estructura compleja</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/10/29/clonacion-de-objetos.aspx</link><pubDate>Mon, 29 Oct 2007 14:31:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1273754</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=1273754</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/10/29/clonacion-de-objetos.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span&gt;Introducci&amp;oacute;n:&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;La asignaci&amp;oacute;n de una variable en otra, de tipos complejos, como son la mayor&amp;iacute;a de los objetos instanciados de clases del .NET Framework o clases desarrollados por nosotros, dan por resultado dos variables referenciando al mismo objeto. Este concepto es conocido en otros lenguajes de programaci&amp;oacute;n como punteros.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Siendo as&amp;iacute; que al modificar el atributo de un objeto apuntado por dos variables, veremos reflejados el cambio en ambas variables, ya que las dos apuntan a la misma instancia de la clase. Es decir el objeto vive en memoria una vez sola y tiene dos variables que apuntan a &amp;eacute;l. &lt;span&gt;Por circunstancias de las reglas de negocio es necesario a veces obtener una copia en memoria de un objeto, teniendo as&amp;iacute; dos variables apuntando a 2 objetos distintos que contienen los mismos valores.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Como todos los tipos&amp;nbsp; que desarrollamos en.NET son serializables, podemos usar serializaci&amp;oacute;n de objetos para clonarlos. A continuaci&amp;oacute;n veremos un ejemplo donde utilizamos la t&amp;eacute;cnica de seralizaci&amp;oacute;n de un objeto en un espacio de memoria adicional o &lt;b&gt;MemoryStream&lt;/b&gt;, y creamos una copia del objeto deserializandolo en una nueva instancia.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;a href="http://msmvps.com/blogs/cwalzer/pages/clonaci-243-n-de-objetos-de-estructura-compleja.aspx"&gt;&lt;strong&gt;Art&amp;iacute;culo completo...&lt;/strong&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&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/10/29/clonacion-de-objetos.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=1273754" 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></item><item><title>Curso de Capacitación "Introducción al lenguaje de programación en C#".</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/07/24/curso-de-capacitaci-243-n-quot-introducci-243-n-al-lenguaje-de-programaci-243-n-en-c-quot.aspx</link><pubDate>Tue, 24 Jul 2007 14:02:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1052830</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=1052830</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/07/24/curso-de-capacitaci-243-n-quot-introducci-243-n-al-lenguaje-de-programaci-243-n-en-c-quot.aspx#comments</comments><description>&lt;p&gt;&lt;span class="Event_Date" id="_ctl0__ctl0__ctl0_Eventlocation1"&gt;&lt;span class="Event_Date" id="_ctl0__ctl0__ctl0_Briefdescription1"&gt;&lt;strong&gt;Introducción al Framework .NET&lt;br /&gt;El Lenguaje de Programación C#&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Event_Date"&gt;&lt;span class="Event_Date"&gt;&lt;strong&gt;Introducción a la IDE de Desarrollo&lt;br /&gt;Acceso a Base de Datos&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;a class="" href="http://www.mug.org.ar/Eventos/2752.aspx"&gt;Información&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Event_Date"&gt;&lt;strong&gt;Lugar&lt;/strong&gt;: Auditorio MUG - Rivadavia 1479 1º Piso - Oficina A. &lt;/span&gt;&lt;br /&gt;&lt;font face="Verdana"&gt;&lt;strong&gt;Fecha y Horario:&lt;/strong&gt; Jueves 9 y Viernes 10 de Agosto de 2007 de 16 a 22 horas&lt;br /&gt;&lt;/font&gt;&lt;font face="Verdana"&gt;&lt;strong&gt;Duración:&lt;/strong&gt; 12 horas&lt;strong&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1052830" 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></item></channel></rss>