<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.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>WarNov Developer Evangelist</title><link>http://blogs.msdn.com/b/warnov/</link><description>Open mind 4 a Different Coding with Microsoft Technologies</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>NodeJS: Shared State Concurrency y WebMatrix</title><link>http://blogs.msdn.com/b/warnov/archive/2013/05/14/nodejs-shared-state-concurrency-y-webmatrix.aspx</link><pubDate>Tue, 14 May 2013 14:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10417484</guid><dc:creator>WarNov</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;iframe style="border: currentcolor; width: 450px; height: 80px; overflow: hidden;" src="http://www.facebook.com/plugins/like.php?href=http://warnov.com/@NodeState&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;font&amp;amp;colorscheme=light&amp;amp;height=80" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;font face="Calibri"&gt;&lt;font size="3"&gt;&lt;!-- Place this tag where you want the +1 button to render --&gt;&lt;!-- Place this render call where appropriate --&gt;&lt;/font&gt;&lt;/font&gt;&lt;script type="text/javascript"&gt;// &lt;![CDATA[
gapi.plusone.go();
// ]]&gt;&lt;/script&gt;&lt;font size="3"&gt;&lt;span style="font-family: calibri;"&gt;&lt;span style="font-family: calibri;"&gt;Este post tiene como objetivo tratar dos temas en paralelo.        &lt;br /&gt; En primera medida, quiero mostrar cómo con WebMatrix 3.0, podemos crear sitios wen 3 plataformas distintas:         &lt;br /&gt; 1. PHP         &lt;br /&gt; 2. ASP.NET (Razor)         &lt;br /&gt;3. NodeJS&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;  &lt;div style="line-height: 150%;" align="justify"&gt;   &lt;p&gt;&lt;font size="3" face="Calibri"&gt;De esta manera, estaremos creando la misma aplicación web usando las tres plataformas y todo esto solo en 15 minutos.&lt;/font&gt;&lt;/p&gt;   &lt;font size="3" face="Calibri"&gt;&lt;/font&gt;    &lt;p&gt;&lt;font size="3" face="Calibri"&gt;El segundo tema que quiero tratar en paralelo es una particularidad en NodeJS que es muy importante tener en cuenta a la hora de manejar el estado de una aplicación Web, pues el comportamiento es bien distinto a lo esperado en ambientes como PHP o .NET.&lt;/font&gt;&lt;/p&gt;   &lt;font size="3" face="Calibri"&gt;&lt;/font&gt;    &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Gran parte de la discusión acerca de Node.js está centrada en sus capacidades para atender mucha, pero mucha concurrencia.&lt;/font&gt;&lt;/p&gt;   &lt;font size="3" face="Calibri"&gt;&lt;/font&gt;    &lt;p&gt;&lt;font size="3" face="Calibri"&gt;En términos simples, Node es un framework que ofrece a los desarrolladores una manera poderosa para diseñar aplicaciones de networking que se van a ejecutar realmente bien en comparación con otras soluciones del mainstream, SIEMPRE Y CUANDO, los desarrolladores comprendan los tradeoffs o las trampillas que pueden existir detrás de lo que hace que Node se comporte tan bien.&lt;/font&gt;&lt;/p&gt;   &lt;font size="3" face="Calibri"&gt;&lt;/font&gt;    &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Y cuando hablamos de esto, básicamente estamos hablando de Shared State Concurrency o Concurrencia de Estado Compartido. A qué me refiero con esto?&lt;/font&gt;&lt;/p&gt;   &lt;font size="3" face="Calibri"&gt;&lt;/font&gt;    &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Básicamente a que en NodeJS no hay una separación de sesiones en cada llamado al server, porque en Node, todo corre en un solo hilo, a diferencia de PHP o .NET. Por esto, es muy importante ser supremamente cuidadosos con la forma en que Javascript accede a las variables de la aplicación, pues cualquier modificación afectará al resto de los llamados.&lt;/font&gt;&lt;/p&gt;   &lt;font size="3" face="Calibri"&gt;&lt;/font&gt;    &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Esto, obviamente no quiere decir que manejos de información por sesión no se puedan lograr. Solo que se ejecutan de una manera distinta a como estamos acostumbrados.&lt;/font&gt;&lt;/p&gt;   &lt;font size="3" face="Calibri"&gt;&lt;/font&gt;    &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Para ejemplificar esta situación, he creado estas tres páginas web dinámicas que hacen lomismo: Inicializan un arreglo de strings, lo muestran en la página y luego lo eliminan. En ASP.NET y PHP, se espera que cada vez que un usuario ingrese, el arreglo se reinicie, mostrando siempre elementos. Pero en NodeJs esto no ocurre dado que Node corre sobre un solo hilo. Entonces cuando el arreglo se elimina y un nuevo usuario hace una petición al sitio, éste va a encontrar el arreglo vacío, pues el estado se comparte con todos los requests.&lt;/font&gt;&lt;/p&gt;   &lt;font size="3" face="Calibri"&gt;&lt;/font&gt;    &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Veamos el código para cada caso y luego un video con la demostración:&lt;/font&gt;&lt;/p&gt;    &lt;h2&gt;PHP&lt;/h2&gt;    &lt;pre class="code" style="background: black;"&gt;&lt;span style="background: black; color: rgb(247, 139, 8);"&gt;&amp;lt;?php &lt;br /&gt;   &lt;/span&gt;&lt;span style="background: black; color: rgb(98, 197, 223);"&gt;$metallicaAlbums&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;=&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;array&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;( &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'...And justice for all'&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;, &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'Ride the Lightning' &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;); &lt;br /&gt;&lt;/span&gt;&lt;span style="background: black; color: rgb(247, 139, 8);"&gt;?&amp;gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;html&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt;&lt;br /&gt; &amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;body&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt; &lt;br /&gt;   &lt;/span&gt;&lt;span style="background: black; color: rgb(247, 139, 8);"&gt;&amp;lt;?php &lt;br /&gt;       &lt;/span&gt;&lt;span style="background: black; color: white;"&gt;echo &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'&amp;lt;b&amp;gt;'&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;.join(&lt;/span&gt;&lt;span style="background: black; color: rgb(98, 197, 223);"&gt;$metallicaAlbums&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;,&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'&amp;lt;br&amp;gt;'&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;).&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'&amp;lt;/b&amp;gt;'&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;; &lt;br /&gt;       &lt;/span&gt;&lt;span style="background: black; color: rgb(98, 197, 223);"&gt;$metallicaAlbums&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;=&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;array&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;(); &lt;br /&gt;       &lt;/span&gt;&lt;span style="background: black; color: white;"&gt;echo &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'&amp;lt;br&amp;gt;'&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;; &lt;/span&gt;&lt;span style="background: black; color: white;"&gt;echo &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'&amp;lt;b&amp;gt;'&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;.join(&lt;/span&gt;&lt;span style="background: black; color: rgb(98, 197, 223);"&gt;$metallicaAlbums&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;,&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'&amp;lt;br&amp;gt;'&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;).&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'&amp;lt;/b&amp;gt;'&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;; &lt;br /&gt;   &lt;/span&gt;&lt;span style="background: black; color: rgb(247, 139, 8);"&gt;?&amp;gt;&lt;br /&gt;   &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;br&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt; &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;All Done. &lt;br /&gt;  &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;body&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt; &lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;html&lt;/span&gt;&lt;/pre&gt;

  &lt;h2&gt;.NET (Razor)&lt;/h2&gt;

  &lt;pre class="code" style="background: black;"&gt;&lt;span style="background: black; color: rgb(247, 139, 8);"&gt;@{ &lt;br /&gt;    &lt;/span&gt;&lt;span style="background: black; color: white;"&gt;var &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;metallicaAlbums&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;=&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;new string&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;[]{&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;quot;...And Justice For All&amp;quot;&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;, &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;quot;Ride the Lightning&amp;quot;&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;}; &lt;br /&gt;&lt;/span&gt;&lt;span style="background: black; color: rgb(247, 139, 8);"&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;!DOCTYPE &lt;/span&gt;&lt;span style="background: black; color: rgb(111, 247, 247);"&gt;html&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt; &lt;br /&gt;   &amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;html &lt;/span&gt;&lt;span style="background: black; color: rgb(111, 247, 247);"&gt;lang&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 241, 0);"&gt;=&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;quot;en&amp;quot;&amp;gt; &lt;br /&gt;     &amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;head&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt; &lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;meta &lt;/span&gt;&lt;span style="background: black; color: rgb(111, 247, 247);"&gt;charset&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 241, 0);"&gt;=&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;quot;utf-8&amp;quot; /&amp;gt; &lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;title&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;title&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt; &lt;br /&gt;     &amp;lt;/&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;head&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt; &lt;br /&gt;     &amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;body&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt; &lt;br /&gt;         &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;My fav Metallica's Albums are:&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;br&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt; &lt;br /&gt;         &amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;b&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: black; color: rgb(247, 139, 8);"&gt;@&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;Html&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;.&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;Raw(&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;string&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;.&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;Join(&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;,metallicaAlbums))&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;b&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt; &lt;br /&gt;         &lt;/span&gt;&lt;span style="background: black; color: rgb(247, 139, 8);"&gt;@{&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;metallicaAlbums&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;=&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;new string&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;[&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;2&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;];&lt;/span&gt;&lt;span style="background: black; color: rgb(247, 139, 8);"&gt;} &lt;br /&gt;         &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;br&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt;&lt;br /&gt;         &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;My fav Metallica's Albums are:&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;br&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt; &lt;br /&gt;         &amp;lt;&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;b&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: black; color: rgb(247, 139, 8);"&gt;@&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;Html&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;.&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;Raw(&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;string&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;.&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;Join(&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;,metallicaAlbums))&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;b&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt;&lt;br /&gt;     &amp;lt;/&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;body&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;html&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;gt; &lt;/span&gt;&lt;/pre&gt;

  &lt;h2&gt;Node JS&lt;/h2&gt;

  &lt;p&gt;&lt;span style="background: black; color: rgb(247, 139, 8);"&gt;&lt;span style="color: rgb(51, 51, 51); font-family: calibri; background-color: rgb(255, 255, 255);"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/2308.nodematrix_5F00_42D8E3B5.png"&gt;&lt;img title="nodematrix" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="nodematrix" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/3362.nodematrix_5F00_thumb_5F00_5DE18CF6.png" width="446" height="253" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;pre class="code" style="background: black;"&gt;&lt;span style="background: black; color: rgb(250, 250, 250);"&gt;var &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;http &lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;= &lt;/span&gt;&lt;span style="background: black; color: rgb(247, 8, 234);"&gt;require&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;(&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'http'&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="background: black; color: rgb(250, 250, 250);"&gt;var &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;metallicaAlbums&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;=[ &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'...And justice for all'&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;, &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'Ride the Lightning' &lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;]; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;http.createServer&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;(&lt;/span&gt;&lt;span style="background: black; color: rgb(250, 250, 250);"&gt;function &lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;(&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;req&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;, &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;res&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;) &lt;br /&gt;{ &lt;br /&gt;    &lt;/span&gt;&lt;span style="background: black; color: rgb(250, 250, 250);"&gt;var &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;html &lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;= &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'&amp;lt;b&amp;gt;' &lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;+ &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;metallicaAlbums.join&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;(&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'&amp;lt;br&amp;gt;'&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;) + &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'&amp;lt;/b&amp;gt;'&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;; &lt;br /&gt;    &lt;/span&gt;&lt;span style="background: black; color: rgb(250, 250, 250);"&gt;if &lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;(&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;metallicaAlbums.length &lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;&amp;lt; &lt;/span&gt;&lt;span style="background: black; color: white;"&gt;1&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;) &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;html &lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;+=  &lt;br /&gt;        &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'Oooops, they are gone!!! :( &amp;lt;/b&amp;gt;'&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;; &lt;br /&gt;    &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;metallicaAlbums &lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;= []; &lt;br /&gt;    &lt;br /&gt;    &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;res.writeHead&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;(&lt;/span&gt;&lt;span style="background: black; color: white;"&gt;200&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;, { &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'Content-Type'&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;: &lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;'text/html' &lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;}); &lt;br /&gt;    &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;res.end&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;(&lt;/span&gt;&lt;span style="background: black; color: rgb(255, 242, 0);"&gt;&amp;quot;These are my favourite Metallica Albums:&amp;lt;br&amp;gt;&amp;quot; &lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;+ &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;html&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;); })&lt;br /&gt;      &lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;.listen&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;(&lt;/span&gt;&lt;span style="background: black; color: rgb(8, 247, 9);"&gt;process.env.PORT &lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;|| &lt;/span&gt;&lt;span style="background: black; color: white;"&gt;8080&lt;/span&gt;&lt;span style="background: black; color: rgb(248, 141, 26);"&gt;); &lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h2 align="justify"&gt;Demo en Video&lt;/h2&gt;

&lt;div style="line-height: 150%;" align="justify"&gt;
  &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/nV_OItpzB0c" frameborder="0" width="560"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;iframe style="border: currentcolor; width: 450px; height: 80px; overflow: hidden;" src="http://www.facebook.com/plugins/like.php?href=http://warnov.com/@nodestate&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;font&amp;amp;colorscheme=light&amp;amp;height=80" frameborder="0" allowtransparency="true" scrolling="no"&gt;&lt;/iframe&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10417484" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/warnov/archive/tags/WebMatrix/">WebMatrix</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Nodejs/">Nodejs</category></item><item><title>Windows Azure Websites: Dominios Personalizados</title><link>http://blogs.msdn.com/b/warnov/archive/2013/05/08/windows-azure-websites-dominios-personalizados.aspx</link><pubDate>Wed, 08 May 2013 23:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10416515</guid><dc:creator>WarNov</dc:creator><slash:comments>0</slash:comments><description>&lt;iframe style="border: currentcolor; width: 450px; height: 80px; overflow: hidden;" src="http://www.facebook.com/plugins/like.php?href=http://warnov.com/@dominiosazurewebsites&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;font&amp;amp;colorscheme=light&amp;amp;height=80" frameborder="0" allowtransparency="true" scrolling="no"&gt;&lt;/iframe&gt; &lt;!-- Place this tag where you want the +1 button to render --&gt;&lt;g:plusone size="small"&gt;&lt;/g:plusone&gt;&lt;!-- Place this render call where appropriate --&gt;&lt;script type="text/javascript"&gt;gapi.plusone.go();&lt;/script&gt;  &lt;div style="line-height: 150%;" align="justify"&gt;&lt;/div&gt; &lt;font size="3" face="Calibri"&gt;   &lt;div style="line-height: 150%;" align="justify"&gt;&lt;/div&gt;    &lt;p style="line-height: 150%;" align="justify"&gt;En general los sitios de Azure Websites vienen con nombres del estilo: &lt;a href="http://warnov.azurewebsites.net"&gt;http://warnov.azurewebsites.net&lt;/a&gt;.&lt;/p&gt;    &lt;div style="line-height: 150%;" align="justify"&gt;&lt;/div&gt;    &lt;p style="line-height: 150%;" align="justify"&gt;Afortunadamente Windows Azure ofrece una metodología muy sencilla para asignar un nombre de dominio personalizado para que tu sitio tenga por ejemplo el nombre: &lt;a href="http://warnov.com"&gt;http://warnov.com&lt;/a&gt;.&lt;/p&gt;    &lt;div style="line-height: 150%;" align="justify"&gt;&lt;/div&gt;    &lt;p style="line-height: 150%;" align="justify"&gt;Básicamente lo que tenemos que hacer:&lt;/p&gt;    &lt;div style="line-height: 150%;" align="justify"&gt;&lt;/div&gt;    &lt;div style="line-height: 150%;" align="justify"&gt;     &lt;ol&gt;       &lt;li&gt;Verificar que nuestro Azure WebSite esté en Shared o Reserved (los free no pueden tener dominio propio)          &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/2474.image_5F00_316A3590.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/5100.image_5F00_thumb_5F00_054D389F.png" width="385" height="170" /&gt;&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;Configurar en el proveedor de dominio los nombre tipo A.&lt;/li&gt;        &lt;ol&gt;         &lt;li&gt;Uno para el @ y otro para el *&lt;/li&gt;          &lt;ol&gt;           &lt;li&gt;Ambos van con la ip que ofrece Windows Azure:              &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/0285.image_5F00_4F684384.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/0285.image_5F00_thumb_5F00_2387C9C8.png" width="240" height="201" /&gt;&lt;/a&gt;               &lt;br /&gt;              &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/8304.image_5F00_692C53E6.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/0842.image_5F00_thumb_5F00_5FF018A5.png" width="240" height="127" /&gt;&lt;/a&gt;&lt;/li&gt;         &lt;/ol&gt;       &lt;/ol&gt;        &lt;li&gt;Configurar en el proveedor de dominio los CNAMEs:&lt;/li&gt;        &lt;ol&gt;&lt;/ol&gt;     &lt;/ol&gt;   &lt;/div&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;div align="left"&gt;&lt;strong&gt;awverify&lt;/strong&gt; debe corresponder con awverify.warnov.azurewebsites.net (para acceder a &lt;a href="http://warnov.com"&gt;warnov.com&lt;/a&gt;)&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div align="left"&gt;&lt;strong&gt;awverify.www&lt;/strong&gt; debe corresponder con &lt;a href="http://www.awverify.warnov.azurewebsites.net"&gt;www.awverify.warnov.azurewebsites.net&lt;/a&gt; (para acceder a &lt;a href="http://www.warnov.com"&gt;www.warnov.com&lt;/a&gt;)&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div align="left"&gt;&lt;strong&gt;www &lt;/strong&gt;debe corresponder a &lt;a href="http://warnov.azurewebsites.net"&gt;warnov.azurewebsites.net&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/8875.image_5F00_0C98D27F.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/2500.image_5F00_thumb_5F00_17E1E6BC.png" width="389" height="99" /&gt;&lt;/a&gt;&lt;/div&gt;     &lt;/li&gt;      &lt;ol&gt;&lt;/ol&gt;      &lt;li&gt;Grabar los cambios en el proveedor y volver a Windows Azure para agregar los dominios recientemente configurados:&lt;/li&gt;      &lt;ol&gt;       &lt;li&gt;&lt;a href="http://warnov.com"&gt;warnov.com&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.warnov.com"&gt;www.warnov.com&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/2477.image_5F00_7682411F.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/7752.image_5F00_thumb_5F00_654E637C.png" width="224" height="240" /&gt;&lt;/a&gt;&lt;/li&gt;     &lt;/ol&gt;   &lt;/ul&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Los detalles de esta operación los podemos ver en este video de solo 6 minutos, usando como ejemplo a GoDaddy&lt;/p&gt;    &lt;p&gt;Las instrucciones mostradas en este video, podrían aplicarse fácilmente a la configuración en cualquier otro proveedor de dominios:&lt;/p&gt;    &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/bz6c96hBBbA" frameborder="0" width="560"&gt;&amp;amp;amp;amp;amp;amp;amp;#160;&lt;/iframe&gt;&lt;/p&gt; &lt;/font&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;  &lt;div class="fb-comments" data-order-by="reverse_time" data-num-posts="15" data-width="500" data-href="http://warnov.com/@dominiosazurewebsites"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10416515" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Azure/">Azure</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Windows 8: Su primer semestre</title><link>http://blogs.msdn.com/b/warnov/archive/2013/05/07/windows-8-su-primer-semestre.aspx</link><pubDate>Tue, 07 May 2013 06:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10416536</guid><dc:creator>WarNov</dc:creator><slash:comments>0</slash:comments><description>&lt;iframe style="border: currentcolor; width: 450px; height: 80px; overflow: hidden;" src="http://www.facebook.com/plugins/like.php?href=http://warnov.com/@Win8Semestre1&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;font&amp;amp;colorscheme=light&amp;amp;height=80" frameborder="0" allowtransparency="true" scrolling="no"&gt;&lt;/iframe&gt; &lt;!-- Place this tag where you want the +1 button to render --&gt;&lt;g:plusone size="small"&gt;&lt;/g:plusone&gt;&lt;!-- Place this render call where appropriate --&gt;&lt;script type="text/javascript"&gt;gapi.plusone.go();&lt;/script&gt;  &lt;div style="line-height: 150%;" align="justify"&gt;&lt;/div&gt; &lt;font size="3" face="Calibri"&gt;   &lt;div style="line-height: 150%;" align="justify"&gt;&lt;/div&gt;    &lt;p style="line-height: 150%;" align="justify"&gt;Lanzado hace 6 meses y 10 días, Windows 8 en su primer mes vendió 40M de licencias y hoy celebramos más de 100M de licencias vendidas en el mundo. Resultados muy halagadores para un sistema tan revolucionario, dado que esta cifra es del mismo orden que la obtenida por Windows 7 en sus primeros 6 meses, siendo declarado en ese entonces el sistema operativo más veloz en venderse (y funcionar) hasta ese momento.&lt;/p&gt;    &lt;div style="line-height: 150%;" align="justify"&gt;&lt;/div&gt;    &lt;p style="line-height: 150%;" align="justify"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/1882.AllWindows8_5F00_thumb_5F00_06641CBC.jpg" /&gt;       &lt;br /&gt;      &lt;br /&gt;&amp;#160; &lt;br /&gt;Otras cifras que hemos alcanzado en estos 6 meses:&amp;#160;&amp;#160; &lt;/p&gt;    &lt;div style="line-height: 150%;" align="justify"&gt;&lt;/div&gt;    &lt;div style="line-height: 150%;" align="justify"&gt;     &lt;ul&gt;       &lt;li&gt;739 updates&lt;/li&gt;        &lt;ul&gt;         &lt;li&gt;Incluyendo IE10 que ahora reproduce Flash por defecto.&lt;/li&gt;       &lt;/ul&gt;        &lt;li&gt;+60000 apps (más de las que tuvo iOS en todo su primer año)&amp;#160;&amp;#160; &lt;/li&gt;        &lt;li&gt;+500 updates para las apps desarrolladas por Microsoft como tal&lt;/li&gt;        &lt;li&gt;+250M de downloads de apps&lt;/li&gt;        &lt;ul&gt;         &lt;li&gt;90% del catálogo se descarga cada mes&lt;/li&gt;       &lt;/ul&gt;        &lt;li&gt;+2400 dispositivos compatibles con Windows 8&lt;/li&gt;        &lt;li&gt;+537M de visitas al store&lt;/li&gt;        &lt;li&gt;Las apps pagas con trials, se venden 6 veces más que las pagas sin trials&lt;/li&gt;        &lt;li&gt;35294 actualizaciones a apps de terceros. &lt;/li&gt;        &lt;ul&gt;         &lt;li&gt;30% de las apps en el store han sido actualizadas&lt;/li&gt;       &lt;/ul&gt;        &lt;li&gt;Apps con más de un millón de downloads:&lt;/li&gt;        &lt;ul&gt;         &lt;li&gt;Twitter&lt;/li&gt;          &lt;li&gt;Netflix&lt;/li&gt;          &lt;li&gt;eBay&lt;/li&gt;          &lt;li&gt;Amazon&lt;/li&gt;       &lt;/ul&gt;     &lt;/ul&gt;   &lt;/div&gt;    &lt;ul&gt;&lt;/ul&gt;    &lt;p&gt;&amp;#160; &lt;br /&gt;Todo esto sumado a un bello ecosistema en el que por ejemplo ajustamos 400 millones de personas usando el nuevo Outlook.com y 250 millones de personas con Skydrive.       &lt;br /&gt;&amp;#160; &lt;br /&gt;Obviamente, esto está enmarcado en los 700 millones de personas que tienen una Microsoft Account con la cual pueden acceder a todos estos servicios, aún desde otros dispositivos.       &lt;br /&gt;&amp;#160; &lt;br /&gt; Brillante el futuro que le espera a la plataforma y a todos nosotros desarrolladores que le estamos apostando.&lt;/p&gt; &lt;/font&gt;  &lt;div class="fb-comments" data-order-by="reverse_time" data-num-posts="15" data-width="500" data-href="http://warnov.com/@Win8Semestre1"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10416536" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Windows+8/">Windows 8</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/WinRT/">WinRT</category></item><item><title>Windows 8: Una poderosa herramienta de Marketing</title><link>http://blogs.msdn.com/b/warnov/archive/2013/05/02/windows-8-una-poderosa-herramienta-de-marketing.aspx</link><pubDate>Thu, 02 May 2013 07:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10415569</guid><dc:creator>WarNov</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;"&gt;&lt;iframe style="border: currentcolor; width: 450px; height: 80px; overflow: hidden;" src="http://www.facebook.com/plugins/like.php?href=http://warnov.com/@win8InMarketing&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;font&amp;amp;colorscheme=light&amp;amp;height=80" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;!-- Place this tag where you want the +1 button to render --&gt;&lt;!-- Place this render call where appropriate --&gt;&lt;script type="text/javascript"&gt;// &lt;![CDATA[
gapi.plusone.go();
// ]]&gt;&lt;/script&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div style="line-height: 150%" align="justify"&gt;&lt;font size="3" face="Calibri"&gt;  &lt;div style="line-height: 150%;" align="justify"&gt;   &lt;p&gt;&lt;strong&gt;Este artículo está acompañado de Video, Presentación de Slides y Podcast. Encuentralos al final del mismo.&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/5141.Marketing_2D00_Tool_5F00_1D2BFAAC.png"&gt;&lt;img title="Marketing Tool" style="display: inline; background-image: none;" border="0" alt="Marketing Tool" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/6237.Marketing_2D00_Tool_5F00_thumb_5F00_12CAB07F.png" width="613" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Una de las facetas que menos se aprecia cuando se contempla la posibilidad de crear Apps, es que pueden servir perfectamente como un canal adicional de marketing para marcas ya establecidas.&lt;/p&gt;    &lt;p&gt;En este post quiero mostrarles los fundamentos de esta afirmación primero teóricamente y luego desde una perspectiva práctica.&lt;/p&gt;    &lt;p&gt;En general, las marcas siempre tienen necesidades de mercadeo. Citaré algunas que vienen al caso:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Incrementar la frecuencia de contacto con el consumidor&lt;/li&gt;      &lt;li&gt;Alcanzar nuevos consumidores&lt;/li&gt;      &lt;li&gt;Mostrar innovación y una imagen fresca&lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;Estas pocas necesidades ya le abren el camino a un mundo de soluciones y alternativas. Obviamente aquí abordaremos la perspectiva tecnológica.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/1602.Slide2_5F00_288B5AD9.jpg"&gt;&lt;img title="Slide2" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="Slide2" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/4834.Slide2_5F00_thumb_5F00_78810957.jpg" width="567" height="319" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;h3&gt;Incrementar la frecuencia de contacto con el consumidor&lt;/h3&gt;    &lt;p&gt;Con los medios tradicionales, tenemos que esperar a que salga el boletín, revista o folleto. Enviar montones de correo que luego es tachado como SPAM, ejecutar costosas llamadas desde un call center o esperar a que el comercial salga (esto sin mencionar que algunos de estos contactos son unidireccionales).&lt;/p&gt;    &lt;p&gt;Con las apps por el contrario es muy distinto, aún desde el comienzo cuando el usuario la descarga desde el Windows Store. Por qué? Pues porque el mero hecho de descargarla ya es un acto voluntario del usuario. El usuario la quiere descargar porque está a la moda tener apps. Porque es fancy; el usuario ve cool tener una app de la marca, porque espera poder explorar su tienda sin salir de casa, en el elevador, en el transporte, etc., y de esta manera poder comprar sin tener que perder tiempo. El usuario espera que esa app le traiga promociones y oportunidades por demanda y en un medio controlado que no le invade su privacidad ni otras actividades. Información de la marca útil que verá sólo cuando él lo desee, y no como basura que llega por debajo de la puerta, o correos no deseados que ralentizan la lectura del email.&lt;/p&gt;    &lt;h3&gt;Alcanzar nuevos consumidores&lt;/h3&gt;    &lt;p&gt;Hoy estuve donde un cliente y me decía que la mayor cantidad de sus clientes estaban en el rango de 40 a 42 años, aun cuando los productos que venden aplican para gente desde los 15 años. Por qué ocurre esto?&lt;/p&gt;    &lt;p&gt;Una marca tradicional, está acostumbrada al marketing tradicional (el folleto, catálogo y demás que se meten por debajo de la puerta). Pero llegan marcas innovadoras. Y a veces ni siquiera marcas, sino sencillos distribuidores. Distribuidores que al no poseer una maquinaria tan grande como la de una marca tradicional, buscan en la tecnología la forma de hacer más con menos. Y entonces hacen tiendas virtuales, anuncios con ads y sí: también hacen apps. Y cuando recurren a todos estos medios, empiezan a tocar a los nuevos consumidores. Consumidores para los cuales no existe el papel. Para los cuales no existe la franja prime time, porque todo lo que ven es por streaming. Consumidores que representan una gran cantidad de leads que no se están generando, sencillamente porque se salen de la zona de acción del marketing tradicional.&lt;/p&gt;    &lt;h3&gt;Mostrar innovación y una imagen fresca&lt;/h3&gt;    &lt;p&gt;Crees que innovar es tener un sistema de fidelidad basado en puntos? Imagino que no; sobre todo en la parte en que te piden la cédula cuando vas a pagar o la tarjeta esa que no hace sino llenarte espacio en tu billetera. El teléfono o la Tablet, son en últimas controles remotos de todo lo que hacemos a diario. Y por ende también se convierten en extensiones de nuestra billetera. Por qué no tener esos puntos en una app entonces? Así cuando compre a través de la app gano puntos. O si tengo un dispositivo con NFC, cuando pase por la caja paso el dispositivo y de inmediato recibo mis puntos asignados. A mí me parecería formidable que pudiera redimir mis puntos online y me llevaran de inmediato el premio a casa. O que si estoy en la tienda y voy a pagar, activo mi app y le digo que me genere un código para pagar con 5000 puntos. Entonces se me genera el código y cuando lo active pagando, los puntos son descontados de mi saldo. Vean que no es rocket science, pero como consumidor, obtengo una imagen de alta innovación. Una imagen que en realidad me hará fan de una marca. Yo no me hago fan de una marca porque me envían un twitt diciendo que me haga fan. Me hago fan cuando veo que me ahorran tiempo. Que son efectivos. Que se esmeran!&lt;/p&gt;    &lt;p&gt;No serían fan ustedes de un restaurante de hamburguesas al que le pueden ir pidiendo su almuerzo cuando salen de la ofi y sacan su celu y abren la app, especifican qué quieren y lo pagan? Cuando llegan al restaurante, la espera por el pedido se habrá reducido al menos los diez minutos de caminata y lo mejor de todo, se ahorrarán un montón de tiempo en la fila. Eso sí que me haría fan de esa marca.&lt;/p&gt;    &lt;h2&gt;No se trata solo de una app&lt;/h2&gt;    &lt;p&gt;Si bien hemos visto que las apps pueden brindar la solución a las tres necesidades que he planteado, no es soplar y hacer botellas…&lt;/p&gt;    &lt;p&gt;El mundo de las apps es de ¨one shot, one opportunity¨. Si no atrapas al usuario una vez se abre la app por primera vez, pocas posibilidades existen de que ese usuario vuelva a la app.&lt;/p&gt;    &lt;p&gt;El éxito de una app no se mide por el número de descargas. Se mide por el tiempo que pasan esos usuarios en la app. Se mide por los reviews que se hacen de la app y por las recomendaciones a los amigos.&lt;/p&gt;    &lt;p&gt;Para lograr que una app mantenga mucho tiempo a un usuario dentro de ella; que genere buenos reviews y que se convierta en viral, es necesario ser consciente de que los estándares de calidad han de ser mayores aún que los de las aplicaciones organizacionales internas. Pero sobretodo, el diseño ha de ser impecable.&lt;/p&gt;    &lt;p&gt;Y cuando hablo de diseño no me refiero solo a la forma de la app, sino al cómo desempeña su función. Cuál es la experiencia que le da al usuario. Qué tan ergonómica es. Tienes que hacer más de tres taps para llegar a alguna función? Olvídalo. Eso no es usabilidad. Los colores no permiten ver bien el texto? La función principal de la app no es lo primero que se ve? Una vista está saturada de funciones que hacen difícil cuál escoger? Todas estas cosas son las causantes de la ruina de una app.&lt;/p&gt;    &lt;p&gt;Es por esto que el papel de los diseñadores se vuelve tan relevante dentro de la creación de las apps. Y es por esto que es muy importante que la plataforma de desarrollo ofrezca una plena integración entre los mundos del diseño y el desarrollo, de manera tal que los desarrolladores puedan trabajar sobre copias vivas de lo que están haciendo los diseñadores y afortunadamente, en esto Microsoft se ubica en la vanguardia a través de herramientas como Blend + Visual Studio.&lt;/p&gt;    &lt;p&gt;Una app completamente atractiva para los usuarios y que además se comporte bien haciendo correctamente lo que debe hacer, logrará tener una gran cantidad de descargas, pero sobretodo una gran masa de usuarios satisfechos listos a ser tocados por las campañas de marketing, mientras recomiendan la app a otros nuevos usuarios con una inversión mucho menor a la de los medios tradicionales de mercadeo. Como si fuera poco, todo esto permitirá que la marca en cuestión, se convierta en un referente en la industria, en cuanto a integración con la tecnología se trata. Y esto será incuestionable, pues la audiencia misma será la encargada de ratificarlo.&lt;/p&gt;    &lt;h2&gt;Las ventajas con Microsoft&lt;/h2&gt;    &lt;p&gt;Ofrecer una plataforma para el desarrollo de apps desde Microsoft, por supuesto que no fue un tema tomado a la ligera. Concienzudos estudios acerca de usabilidad y filosofía de la app fueron llevados a cabo para poder ofrecer un conjunto de pilares que permitieran construir apps ajustadas a las premisas que describimos anteriormente:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/8561.Slide3_5F00_1E0A86B9.jpg"&gt;&lt;img title="Slide3" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="Slide3" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/8535.Slide3_5F00_thumb_5F00_5353991E.jpg" width="560" height="315" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;h3&gt;1. Fast and Fluid&lt;/h3&gt;    &lt;p&gt;El fast no es porque la app se ejecute rápido. El ejecutarse rápido es una característica tan obvia, que ya está dada por hecha (y efectivamente así es hoy en día). Fast hace referencia a poder hacer lo que deseamos con nuestra app de una manera rápida y sin complicaciones. Practicidad y ergonomía. Pensar en hacer algo en vez de pensar en una herramienta para hacer algo. Decir: Voy a avisarle a mi madre que la visitaré, en vez de decir: abriré Facebook para mandarle un mensaje a mi mamá acerca de mi visita. Una plataforma que exalta el contenido sobre el marco. En la que los menús no son necesarios, porque todas las funcionalidades saltan a la vista sin saturar al usuario. Una plataforma optimizada para el touch, pero que no olvida la alta productividad obtenida con un mouse y teclado. Fast es poder hacer todo esto con nuestras apps, y de eso sí que sabe Windows 8. Fluid sencillamente es la característica que permite que a pesar de que todo sea tan “fast” las tareas se puedan ejecutar sin complicaciones sino de manera natural y amigable. Fluid en otras palabras, marca el final de los wizards, tutoriales y menús de ayuda. Tus usuarios adorarán olvidarse del F1.&lt;/p&gt;    &lt;h3&gt;2. Enriched Content&lt;/h3&gt;    &lt;p&gt;Las apps en Windows 8 son todo acerca del contenido. Nos olvidamos de los marcos. El usuario queda inmerso en el mensaje que queremos transmitirle a través de nuestra app sin distracciones. Esta es una característica poderosa para ofrecer la información que necesitamos. El marketing que queremos. Este contenido puede incluir de manera muy sencilla no solo texto, sino también videos, enlaces, fotografías, audio y cualquier elemento interactivo.&lt;/p&gt;    &lt;h3&gt;3. Integrated Devices&lt;/h3&gt;    &lt;p&gt;Las apps de Windows 8 solo son la punta del iceberg que atrás está totalmente respaldado por una historia con décadas de vasta experiencia transversal en el desarrollo de tecnologías de la información que siempre nos ha caracterizado. Es así como a través de Windows Azure, Skydrive, Office Web Apps, Sharepoint y Office 365 entre otros, es posible permitir que datos generados en un dispositivo móvil vayan a un repositorio central y puedan ser descargados por otros dispositivos en cualquier parte del mundo. Pero lo mejor, es que todas estas tecnologías están disponibles también para los departamentos de IT de la marca, que pueden entonces ejercer Business Intelligence acerca de los datos emitidos desde las apps, y sobre estos verificar retornos de inversión en Mercadeo y también futuros planes en este sentido.&lt;/p&gt;    &lt;h3&gt;4. Highly Interactive&lt;/h3&gt;    &lt;p&gt;El marketing moderno exige poder transmitirles mensajes a los usuarios de maneras innovadoras que no los hagan alejarse del medio en bien comiencen a recibirlos.&lt;/p&gt;    &lt;p&gt;Windows 8 se posiciona perfectamente como una plataforma sobre la cual se pueden construir estas experiencias, al soportar fácilmente interacciones a través de sensores de movimiento, GPS, NFC, etc, así como un rico Lenguaje Touch que permiten a los usuarios modificar la forma en la que acceden a la información presentada y en la que dan respuesta cuando las app así lo requieren.&lt;/p&gt;    &lt;h3&gt;5. Social&lt;/h3&gt;    &lt;p&gt;Indiscutiblemente aquel medio que le permita a un individuo establecer contacto de manera rápida y sencilla con los de su especie, generará en la mayoría de interacciones un apego hacia ese medio.&lt;/p&gt;    &lt;p&gt;Las redes sociales son prueba fehaciente de ello y Windows 8 desde su concepción ha sido creado pensando en la situación actual de dichas redes. Es así que el funcionamiento de la plataforma al igual que en Windows Phone, gira alrededor de las personas. Por ende, desde cualquier app, es muy fácil comunicarse con los amigos para transferir información relevante a esa app. Obviamente esto genera efecto viral acerca del marketing que generamos en nuestra app, sin mencionar que allí también podemos aprovechar el hecho de que los usuarios puedan recomendar la app como tal para que más personas la tengan en sus dispositivos.&lt;/p&gt;    &lt;h3&gt;6. Monetization&lt;/h3&gt;    &lt;p&gt;Un gran diferenciador ofrecido en la plataforma de apps de Windows, reside en este tema.&lt;/p&gt;    &lt;p&gt;Microsoft ofrece sus sistemas de cobro para que los usuarios afiliados al store puedan ejecutar compras desde dentro de las apps a través de ellos, quitándole a las marcas la necesidad de crear estos sistemas. Obviamente, esto tiene un costo de mantenimiento y es del 30% de todas las transacciones.&lt;/p&gt;    &lt;p&gt;Este modelo se replica en todos los stores de aplicaciones en la industria.&lt;/p&gt;    &lt;p&gt;Aunque esto es una gran ayuda para los start ups, es muy frecuente que cuando la marca ya está establecida, ésta ya posea mecanismos de recaudo electrónico efectivos. Y si es así, no se justifica tener que pagar por una plataforma. Es por esto que Microsoft otorga total libertad para que la marca use los mecanismos de cobro que desee. Cosa que no pasa por ejemplo en el Apple Store, donde es OBLIGATORIO usar su plataforma de monetización.&lt;/p&gt;    &lt;p&gt;De la misma manera, se ofrecen mecanismos de publicidad propietarios, pero la marca es libre de escoger aquel con el que ya esté acostumbrada a trabajar.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;h2&gt;Video&lt;/h2&gt;    &lt;p&gt;A continuación les dejo el video de este post, en el que encuentran el contenido aquí descrito&lt;/p&gt;    &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/76nBwbY2GqE" frameborder="0" width="560"&gt;&amp;amp;amp;amp;amp;amp;amp;amp;#160;&lt;/iframe&gt;&lt;/p&gt;    &lt;h2&gt;PPTx&lt;/h2&gt;    &lt;p&gt;Esta es la presentación usada en este post:&lt;/p&gt;    &lt;p&gt;&lt;iframe height="327" src="https://skydrive.live.com/embed?cid=A9CD39D0607323CA&amp;amp;resid=A9CD39D0607323CA%21250060&amp;amp;authkey=AOj-FOd00tRPzgk&amp;amp;em=2" frameborder="0" width="402" scrolling="no"&gt;&amp;amp;amp;amp;amp;amp;amp;amp;#160;&lt;/iframe&gt;&lt;/p&gt;    &lt;p&gt;SlideShare&lt;/p&gt;    &lt;p&gt;&lt;iframe height="400" marginheight="0" src="http://www.slideshare.net/slideshow/embed_code/20390019" frameborder="0" width="476" marginwidth="0" scrolling="no"&gt;&amp;amp;amp;amp;amp;amp;amp;amp;#160;&lt;/iframe&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;h2&gt;Podcast&lt;/h2&gt;    &lt;p&gt;Finalmente, aquí está la version Podcast de este artículo&lt;/p&gt;    &lt;p&gt;&lt;iframe height="120" src="https://skydrive.live.com/embed?cid=A9CD39D0607323CA&amp;amp;resid=A9CD39D0607323CA%21250065&amp;amp;authkey=AEkfn_03secU4gY" frameborder="0" width="98" scrolling="no"&gt;&amp;amp;amp;amp;amp;amp;amp;amp;#160;&lt;/iframe&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/div&gt; &lt;/font&gt;&lt;/div&gt; &lt;div class="fb-comments" data-href="http://blogs.msdn.com/b/warnov/archive/2013/05/02/windows-8-una-poderosa-herramienta-de-marketing.aspx" data-width="500" data-num-posts="15" data-order-by="reverse_time"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10415569" width="1" height="1"&gt;</description></item><item><title>Domando los idiomas en Windows 8</title><link>http://blogs.msdn.com/b/warnov/archive/2013/04/09/domando-los-idiomas-en-windows-8.aspx</link><pubDate>Tue, 09 Apr 2013 22:49:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10409821</guid><dc:creator>WarNov</dc:creator><slash:comments>0</slash:comments><description>&lt;div style="line-height: 150%;" align="justify"&gt;&lt;font size="3" face="Calibri"&gt;&lt;iframe style="border: currentcolor; width: 450px; height: 80px; overflow: hidden;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.msdn.com/b/warnov/archive/2013/04/09/domando-los-idiomas-en-windows-8.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;font&amp;amp;colorscheme=light&amp;amp;height=80" frameborder="0" allowtransparency="true" scrolling="no"&gt;&lt;/iframe&gt; &lt;!-- Place this tag where you want the +1 button to render --&gt;&lt;g:plusone size="small"&gt;&lt;/g:plusone&gt;&lt;!-- Place this render call where appropriate --&gt;&lt;script type="text/javascript"&gt;gapi.plusone.go();&lt;/script&gt;      &lt;div style="line-height: 150%;" align="justify"&gt;&lt;font size="3" face="Calibri"&gt; Windows 8 está altamente enfocado en la movilidad. Y una parte de la movilidad es poder manejar diversos dispositivos sin problemas.                   &lt;p&gt;Con los diversos dispositivos puede ocurrir que éstos se encuentren configurados para diversos idiomas.&lt;/p&gt;          &lt;p&gt;Algo que ustedes ya deben haber sufrido, es llegar a una máquina y encontrar que el teclado no tiene la “ñ” o que la arroba no sale ni golpeándole.&lt;/p&gt;          &lt;p&gt;Otra frustración es que el OS está en español y ustedes como yo, están ya tan acostumbrados a que esté en inglés que les parece horroroso verlo así y quisieran verlo en inglés, pero la máquina no es de ustedes, por ejemplo.&lt;/p&gt;          &lt;p&gt;La buena noticia es que Windows 8 tiene todo esto en cuenta y por si fuera poco, ofrece opciones de corrección de ortografía para apps y el browser, basado en el idioma que escogemos, al mejor estilo de Windows Phone. I mean: si ud. escogió español, Windows 8 subraya errores ortográficos del español y autocompleta en español. Lo mismo pasa cuando tenemos por ejemplo el idioma inglés.&lt;/p&gt;          &lt;p&gt;Entonces,&lt;/p&gt;          &lt;p&gt;&amp;#160;&lt;/p&gt;          &lt;h3&gt;Cómo operamos?&lt;/h3&gt;          &lt;p&gt;Lo primero es definir el idioma en el que queremos el OS. Por ejemplo, en mi casa a una PC compartida yo le instalé Windows 8 en inglés, pero luego la abuela se quejaba de que no entendía ni papa. Así que me baje el &lt;strong&gt;Language Pack&lt;/strong&gt;&amp;#160; en español y se lo instalé: &lt;/p&gt;          &lt;p&gt;1. Abrir el charm de Search y escribir &lt;strong&gt;Language. &lt;/strong&gt;Luego escoger &lt;strong&gt;Settings&lt;/strong&gt; y dar tap o click en &lt;strong&gt;Add a Language &lt;/strong&gt;y aparecerá:&lt;/p&gt;          &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/1031.image_5F00_7E719440.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/8877.image_5F00_thumb_5F00_683B78EE.png" width="400" height="218" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;Al agregar el lenguaje de inmediato se habilitan las opciones de autocorrección y demás. Pero aún la interfaz del sistema sigue estando en el idioma original. Para cambiarla totalmente hacemos click en Options y allí escogemos descargar e instalar el Language Pack&lt;/p&gt;          &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/5238.image_5F00_3BB24908.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/0458.image_5F00_thumb_5F00_7E41E480.png" width="400" height="283" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;Luego comienza la descarga:&lt;/p&gt;          &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/8865.image_5F00_43E66E9F.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/1106.image_5F00_thumb_5F00_17C971AE.png" width="404" height="287" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;&amp;#160;&lt;/p&gt;          &lt;p&gt;Después de instalado, podemos volver a las opciones y escoger el lenguaje como lenguaje principal:&lt;/p&gt;          &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/4237.image_5F00_4F2F82DC.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/4237.image_5F00_thumb_5F00_271CD3BD.png" width="400" height="327" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;Este es un cambio que requiere un re-login para surtir efecto.&lt;/p&gt;          &lt;p&gt;Puede que las apps se sigan mostrando en el lenguaje anterior. Para evitar esto, ponemos el lenguaje recién instalado con más alta prioridad en la ventana anterior, usando Move Up:&lt;/p&gt;          &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/2086.image_5F00_57CFDB68.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/4718.image_5F00_thumb_5F00_5DAA7F01.png" width="400" height="232" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;&amp;#160;&lt;/p&gt;          &lt;p&gt;&amp;#160;&lt;/p&gt;          &lt;p&gt;Y listo, con esto ya solucionamos el problema del idioma del sistema operativo per se.&lt;/p&gt;          &lt;p&gt;Pasemos ahora al asunto de&lt;/p&gt;          &lt;h3&gt;Configuración de Teclados&lt;/h3&gt;          &lt;p&gt;Entre otras máquinas, tengo un PC (el que se comparte con la abuela y las visitas) con teclado con ñ y tíldes.&lt;/p&gt;          &lt;p&gt;Mi PC personal, tiene un teclado que está en Inglés. El teclado de mi laptop tiene un teclado también con ñ y tíldes, perso ciertas teclas no están en la misma posición que las del PC anterior. &lt;/p&gt;          &lt;p&gt;Por qué sucede esto?&lt;/p&gt;          &lt;p&gt;Esto sucede básicamente porque los teclados además de venir en un idioma dado (los que traen ñ obviamente es porque vienen en español), también vienen en una distribución de teclado especial. &lt;/p&gt;          &lt;p&gt;Después de averiguar un poco, encontré que el PC compartido viene con un teclado en español y distribución Española:&lt;/p&gt;          &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/2158.image_5F00_3B72737B.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/2642.image_5F00_thumb_5F00_0F55768A.png" width="400" height="137" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;Mientras que el teclado de mi laptop principal viene con distribución latinoamericana:&lt;/p&gt;          &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/7851.image_5F00_31CA0545.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/3618.image_5F00_thumb_5F00_2CE75189.png" width="400" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;Como se aprecia, las teclas en conflicto son las que los developers usamos más al escribir código. Es un pain completo tenerlas perdidas. Así que mi consejo es que siempre miren que layout tienen y configuren su máquina para que use este layout.&lt;/p&gt;          &lt;p&gt;Pero entonces viene la llorada:&lt;/p&gt;          &lt;p&gt;&lt;em&gt;Ay, pero es que me da pereza estar ajustando eso a toda hora!&lt;/em&gt;&lt;/p&gt;          &lt;p&gt;Pues la noticia es que solo se debe configurar una vez! Y además con Windows 8, los settings viajan con nuestra cuenta de login en el sistema (Microsoft Account). Así que a medida de que en mis máquinas fui encontrando configuraciones distintas de teclado, las fui ajustando y luego cuando regresaba a esas máquinas, ya estaban listas para ser usadas.&lt;/p&gt;          &lt;p&gt;Pero vamos por partes. Primero aprendamos cómo configurar estas distribuciones de teclado, y luego veremos como recuperarlas, dependiendo de la máquina en la que estemos:&lt;/p&gt;          &lt;h3&gt;Configuración de Layouts de Teclado&lt;/h3&gt;          &lt;p&gt;Recuerdan la ventana de selección de lenguaje en la que habíamos quedado?&lt;/p&gt;          &lt;p&gt;Volvamos a ella y observemos:&lt;/p&gt;          &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/7345.image_5F00_16B13637.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/6036.image_5F00_thumb_5F00_6A943945.png" width="400" height="177" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;Hay una sección de métodos de entrada o Input Methods según el idioma en que te encuentres. Allí es donde añades todos los layout de los que te hablé antes. Como ves, para el idioma español, he agregado tres layouts, de acuerdo a las configuraciones que tienen los teclados físicos de mis máquinas. Está la de Latinoamérica, la de España y la de Estados Unidos. Posteriormente les explico para qué es esta última.&lt;/p&gt;          &lt;p&gt;Las dos primeras ustedes saben que son para hacer coincidir la configuración con mis PCs.&lt;/p&gt;          &lt;p&gt;Pero,&lt;/p&gt;          &lt;h3&gt;Cómo agregar nuevos Layouts?&lt;/h3&gt;          &lt;p&gt;Fácil ahí ustedes ven el link a: Agregue un método de entrada; no es sino que lo sigan y llegaran a esto:&lt;/p&gt;          &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/2555.image_5F00_2D9007B3.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/8103.image_5F00_thumb_5F00_1A02A812.png" width="400" height="267" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;Allí es donde ustedes seleccionan la nueva distribución que quieren y para ver si realmente coincide con su teclado físico, pueden darle vista previa (de allí saqué los screenshots que les mostré anteriormente).&lt;/p&gt;          &lt;p&gt;Una vez agregan una distribución, esta queda memorizada en sus Roaming Settings de Windows 8. Por eso si usan el mismo login en otra máquina conectada a internet, estos settings bajarán para que los puedan seleccionar así:&lt;/p&gt;          &lt;h3&gt;Cómo seleccionar layouts previamente ajustados&lt;/h3&gt;          &lt;p&gt;Súper fácil. Solo presionan la tecla Windows + SpaceBar y aparece un índice como este en la parte inferior derecha de la pantalla:&lt;/p&gt;          &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/4377.image_5F00_18BE0F33.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/5850.image_5F00_thumb_5F00_10C66CD1.png" width="240" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;Dejan la tecla Windows presionada y por cada vez que presionen el SpaceBar, se moverán en la lista. Observen mis cuatro configuraciones. Una, para escribir en Inglés con teclados en inglés, y tres para escribir en español. Una por cada layout incluyendo un layout del teclado United States-International.&lt;/p&gt;          &lt;p&gt;Así que de acuerdo a la máquina en la que estén echando código, ustedes seleccionan la combinación adecuada.&lt;/p&gt;          &lt;p&gt;&amp;#160;&lt;/p&gt;          &lt;h3&gt;Hay una forma decente de poner tíldes y eñes en teclados que no las tienen?&lt;/h3&gt;          &lt;p&gt;He visto gente memorizarse donde quedan esas teclas, pero van a otras máquinas y no les sirve. Otros se memorizan el código ascii; pero… han intentado sacar un código ascii en una Tablet por ejemplo? Eso es un pain in the ass…&lt;/p&gt;          &lt;p&gt;Por mera coincidencia descubrí una configuración que me permite hacer un truco muy cool para no tener que usar esos medios tan artificiales y poco efectivos. La idea es que pongan como idioma Español, pero con layout United States-International. Por eso es que ustedes lo ven en mis configuraciones.&lt;/p&gt;          &lt;p&gt;De esta manera, cuando llego a una máquina con teclado en inlgés, para poner la eñe sigo los pasos en rojo y para poner las tíldes lo pasos en azul:&lt;/p&gt;          &lt;p&gt;&amp;#160;&lt;/p&gt;          &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/4774.image_5F00_68B3BDB1.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/1541.image_5F00_thumb_5F00_4EDF8782.png" width="400" height="147" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;En la gráfica no se muestra la realidad total de lo s teclados en inglés, ya que donde aparece el 1 rojo,&amp;#160; siempre aparece el símbolo ~,&amp;#160; de manera que no se nos va a olvidar que así se hace la eñe.&lt;/p&gt;          &lt;p&gt;Cuando se presiona el primer carácter, nada sucede. No aparece nada en la pantalla. Pero cuando se presiona la n o la vocal, ya aparece todo en conjunto. &lt;/p&gt;          &lt;p&gt;Hay un efecto colateral sin embargo y es con las comillas y dobles comillas, pues uno esperaría que al presionarlas de inmediato aparecieran, pero como se quedan esperando para hacer una vocal con tílde o con diéresis (esto es cuando hay doble comilla), entonces hay que pulsar la tecla espacio, para que aprezcan. Pero no es complicado&amp;#160; y vale la pena acostumbrarse. &lt;/p&gt;          &lt;h3&gt;Y entonces para qué mantener una configuración con teclado en inglés y layout EEUU-Internacional?&lt;/h3&gt;          &lt;p&gt;Sucede que a veces nos las damos de bilingües y queremos escribir texto en inglés. Pero como les mencioné, de acuerdo al Lenguaje que esté escogido, Windows 8 intentará ayudarnos a hacer correcciones idiomáticas automáticamente. Así que si escribimos en inglés cuando el idioma seleccionado es español, entonces todo nos aparecerá subrayado como un error. Por eso es bueno tener también configurado el idioma inglés y cualquier otro en el que escribamos frecuentemente, como el Esperanto, por ejemplo.&lt;/p&gt;          &lt;p&gt;Obviamente, en inglés no hay tildes y eñes, así que nunca he tenido que agregarle más layouts que el United States – Internacional.&lt;/p&gt;          &lt;h3&gt;Conclusión&lt;/h3&gt;          &lt;p&gt;Recuerden entonces que hay tres tipos de configuraciones de idioma en Windows 8.&lt;/p&gt;          &lt;p&gt;1. El idioma en el que se muestra el sistema operativo como tal.&lt;/p&gt;          &lt;p&gt;2. El idioma en el que nosotros queremos escribir&lt;/p&gt;          &lt;p&gt;3. La configuración regional que queremos darle al teclado, para que se ajuste a la distribución física del teclado que estamos usando en un momento dado.&lt;/p&gt;          &lt;p&gt;Estas configuraciones se pueden mezclar como deseemos y requiramos y además una vez establecidas las combinaciones requeridas, estas viajan con nosotros y nuestra Microsoft Account.&lt;/p&gt;       &lt;/font&gt;&lt;/div&gt;      &lt;div class="fb-comments" data-href="http://blogs.msdn.com/b/warnov/archive/2013/04/09/domando-los-idiomas-en-windows-8.aspx" data-width="600" data-num-posts="15" data-order-by="reverse_time"&gt;&lt;/div&gt;       &lt;/font&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10409821" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Windows+8/">Windows 8</category></item><item><title>LINQ: Consultando tablas cruzadas en Visual Studio LightSwitch</title><link>http://blogs.msdn.com/b/warnov/archive/2013/03/15/linq_2D00_consultando_2D00_tablas_2D00_cruzadas_2D00_en_2D00_visual_2D00_studio_2D00_lightswitch.aspx</link><pubDate>Fri, 15 Mar 2013 17:25:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10402704</guid><dc:creator>WarNov</dc:creator><slash:comments>0</slash:comments><description>&lt;iframe style="border: currentcolor; width: 450px; height: 80px;" src="https://www.facebook.com/plugins/like.php?href=http://blogs.msdn.com/b/warnov/archive/2013/03/15/linq_2d00_consultando_2d00_tablas_2d00_cruzadas_2d00_en_2d00_visual_2d00_studio_2d00_lightswitch.aspx" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;!-- Place this tag where you want the +1 button to render --&gt;&lt;g:plusone size="small"&gt;&lt;/g:plusone&gt;&lt;!-- Place this render call where appropriate --&gt;&lt;script type="text/javascript"&gt;gapi.plusone.go();&lt;/script&gt;  &lt;div style="line-height: 150%;" align="justify"&gt;&lt;font size="3" face="Calibri"&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;LightSwitch es un RAD para hacer aplicaciones basadas en datos bien sea usando Silverlight, o HTML5. En cuestión de minutos podemos tener una aplicación de ese estilo desplegada y funcionando.&lt;/p&gt;      &lt;p&gt;Cuando ya estamos desarrollando una app de cierta complejidad sin embargo, tarde o temprano llegamos a la necesidad de consultar data que se encuentra distribuida en varias tablas en un ambiente relacional.&lt;/p&gt;      &lt;p&gt;Aunque LightSwitch provee un wizard de consultas básicas, éstas últimas requieren la escritura de código.&lt;/p&gt;      &lt;p&gt;El código usado para escribir consultas complejas el LightSwitch no es más que LINQ. &lt;/p&gt;      &lt;p&gt;En mi primer intento de hacer una consulta cruzada con LINQ dentro de LightSwitch sin embargo, a pesar de escribir instrucciones completamente válidas de acuerdo a la definición de LINQ, siempre obtenía un error emitido por LightSwitch, que además dado el mensaje presentado, no da muchas luces de qué es lo que está sucediendo:&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;&lt;em&gt;Unable to create a constant value of type ‘LightSwitchApplication.MiTabla’. Only primitive types or enumeration types are supported in this context.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;Pasé mucho tiempo experimentando qué podría ser hasta que descubrí que el error sucede cuando en el &lt;strong&gt;where&lt;/strong&gt; de la instrucción LINQ ponemos dos tablas de la DB directamente. Entonces una solución que se me ocurrió y que mi buen amigo @jramirezdev me ayudó a implementar fue descargar primero unos datos, enumerarlos en una lista y luego con joins lograr el resultado. Sin embargo, dado que esto requiere dos llamados distintos a la DB y además resulta en una consulta LINQ difícil de leer, seguí “escarbando” y encontré una gran ayuda en el operador &lt;strong&gt;any&lt;/strong&gt;&amp;#160; de LINQ, que me permite seleccionar los datos que quiero sin tener que citar varias tablas dentro de LINQ, sino más bien explorando las propiedades de navegación del modelo de objetos.&lt;/p&gt;      &lt;p&gt;En este artículo, he invitado precisamente a @jramirezdev, a quien agradezco el haber escrito el proceso de problema y solución en detalle; algo muy valioso para desarrolladores que estén teniendo este mismo problema: &lt;/p&gt;      &lt;p&gt;...&lt;/p&gt;      &lt;p&gt;Es muy común que en nuestras aplicaciones tengamos un origen de datos relacional y sobre este debamos realizar consultas en varias tablas para obtener la información que necesitamos. En LightSwitch las consultas simples se puede realizar con el diseñador integrado, pero si este no es el caso debemos recurrir a crear una consulta desde ceros, esto es, usar EntityFramework + LINQ.&lt;/p&gt;      &lt;p&gt;Cuando utilizamos Entity Framework en LightSwitch nos encontraremos con algunas limitaciones, es por esto que debemos ser cuidadosos pues aunque la consulta LINQ compile no significa que al ejecutarla vayamos a obtener los resultados esperados.&lt;/p&gt;      &lt;p&gt;Para entender esto veremos un caso específico donde realizaremos una consulta de tablas cruzadas con LINQ.&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;Aplicación: &lt;/strong&gt;Crearemos una aplicación que permitirá registrar Usuarios, Tiendas y Facturas. Para esto debemos tener en cuenta que una factura será específica de un Usuario y una Tienda, esto significa que debe existir una relación entre Usuario y Tienda para finalmente registrar las facturas de ese usuario en esa tienda.&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;Modelo Relacional:&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&lt;img alt="" src="http://jramirezdev.net/blog/Media/Default/WebsiteFiles/modeloLS.PNG" width="776" height="547" /&gt;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;Problema:&lt;/strong&gt; Se necesita generar un listado de todas las facturas que existan en las tiendas donde está registrado el usuario &amp;quot;Jorge Ramirez&amp;quot;.&lt;/p&gt;      &lt;p&gt;Para resolver este problema comenzaremos por crear una solución de LS, que se vera de la siguiente manera:&lt;/p&gt;      &lt;p&gt;&lt;img alt="" src="http://jramirezdev.net/blog/Media/Default/WebsiteFiles/LSSolution2.PNG" width="385" height="374" /&gt;&lt;/p&gt;      &lt;p&gt;Aquí podemos observar que debajo de la tabla &amp;quot;Facturas&amp;quot; encontramos una consulta llamada &amp;quot;GetFacturasPorTiendasAsociadasAlCliente&amp;quot;, es en ese archivo que escribiremos nuestra consulta LINQ.&lt;/p&gt;      &lt;p&gt;Escribiré mi primer consulta de la siguiente manera.&lt;/p&gt;      &lt;pre class="code" style="background: black;"&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;        &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;partial void &lt;br /&gt;        &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;GetFacturasPorTiendasAsociadasAlCliente_PreprocessQuery&lt;br /&gt;          (&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ref &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;IQueryable&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Factura&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;&amp;gt; &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;query)
        {
            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(185, 193, 198);"&gt;//Consulta 1
 
            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;var &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;tiendas &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;= &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;from &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;UsuarioTienda ut &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;in &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;UsuarioTiendas
                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;where &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;ut&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Usuario&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Nombre &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;== &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(255, 145, 34);"&gt;&amp;quot;Jorge Ramirez&amp;quot;
                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;select &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;ut;
 
            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;var &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;facturas &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;= &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;from &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Factura factura &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;in &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;query
                           &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;from &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;UsuarioTienda ut &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;in &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;tiendas
                           &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;where &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;factura&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;UsuarioTiendas&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Tienda&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Id &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;==&lt;br /&gt;                               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;ut&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Tienda&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Id
                           &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;select &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;factura;
 
            query &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;= &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;facturas;
       }&lt;/span&gt;&lt;/pre&gt;
 Semánticamente esta consulta es correcta, pero cuando la ejecutamos obtenemos el siguiente error: 

    &lt;p&gt;&lt;img alt="" src="http://jramirezdev.net/blog/Media/Default/WebsiteFiles/LSError.PNG" width="451" height="385" /&gt;&lt;/p&gt;

    &lt;p&gt;Resultado Consulta 1: Error.&lt;/p&gt;

    &lt;p&gt;Este error aunque pareciera claro, no lo es, pues fácilmente nos confunde el pensar ¿Dónde creamos un Obj del tipo &amp;quot;UsuarioTienda&amp;quot;? Pues bueno, aquí es importante conocer el concepto de que son &lt;a href="http://msdn.microsoft.com/en-us/data/jj713564.aspx" target="_blank"&gt;Propiedades de Navegación&lt;/a&gt; de EntityFramework.&lt;/p&gt;

    &lt;p&gt;Leyendo este error vemos que existe una limitación para acceder a las tablas relacionadas/cruzadas a través de las propiedades de navegación, lo cual nos indica que debemos considera una solución más del lado semántico de TSQL donde hacemos los JOINS de forma explícita.&lt;/p&gt;

    &lt;pre class="code" style="background: black;"&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;partial void &lt;br /&gt;          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;GetFacturasPorTiendasAsociadasAlCliente_PreprocessQuery&lt;br /&gt;          (&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ref &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;IQueryable&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Factura&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;&amp;gt; &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;query)
       {
            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(185, 193, 198);"&gt;//Consulta 2
            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;var &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;facturas &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;= &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;(&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;from &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;UsuarioTienda utienda &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;in &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;UsuarioTiendas
                            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;join &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Usuario usuario &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;in &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Usuarios &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;on &lt;br /&gt;                               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;utienda&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Usuario&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Id &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;equals &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;usuario&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Id
                            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;join &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Tienda tienda &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;in &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Tiendas &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;on &lt;br /&gt;                               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;utienda&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Tienda&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Id &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;equals &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;tienda&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Id
                            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;join &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Factura factura &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;in &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;query &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;on &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;tienda&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Id &lt;br /&gt;                                 &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;equals &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;factura&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;UsuarioTiendas&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Tienda&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Id
                            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;where &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;usuario&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Nombre &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;== &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(255, 145, 34);"&gt;&amp;quot;Jorge Ramirez&amp;quot;
                            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;select &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;factura)&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;AsQueryable();
 
            query &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;= &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;facturas;
      }&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;Resultado Consulta 2: Exito.&lt;/p&gt;

    &lt;p&gt;De esta forma EntityFramework ha logrado resolver las relaciones y entregarnos la data que necesitamos.&lt;/p&gt;

    &lt;p&gt;También podemos considerar otra posibilidad jugando con las propiedades de navegación y una expresión Lambda para que nuestra consulta sea más corta.&lt;/p&gt;

    &lt;pre class="code" style="background: black;"&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;        &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;partial void &lt;br /&gt;          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;GetFacturasPorTiendasAsociadasAlCliente_PreprocessQuery&lt;br /&gt;          (&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ref &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;IQueryable&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Factura&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;&amp;gt; &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;query)
        {
            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(185, 193, 198);"&gt;//Consulta 3
 
            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;var &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;facturas &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;= &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;from &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Factura factura &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;in &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;query
                         w&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;here &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;factura&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;UsuarioTiendas&lt;br /&gt;                        &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Tienda&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;UsuarioTiendas&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;br /&gt;                        &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Any(c &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;=&amp;gt; &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;c&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Usuario&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;Nombre &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;== &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(255, 145, 34);"&gt;&amp;quot;Jorge Ramirez&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;)
                        &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;select &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;factura;
 
            query &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(232, 226, 183);"&gt;= &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;facturas;
        }&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;Resultado Consulta 3: Exito.&lt;/p&gt;

    &lt;p&gt;&lt;strong&gt;PROFILING&lt;/strong&gt;&lt;/p&gt;

    &lt;p&gt;Finalmente como un proceso educativo, realizaremos uso de un perfilador (profiler) para ver como se comportan nuestras dos consultas exitosas.&lt;/p&gt;

    &lt;p&gt;Consulta 2: Reporte&lt;/p&gt;

    &lt;p&gt;&lt;img alt="" src="http://jramirezdev.net/blog/Media/Default/WebsiteFiles/query2.PNG" width="910" height="167" /&gt;&lt;/p&gt;

    &lt;p&gt;Consula 2: Entity SQL Generado&lt;/p&gt;

    &lt;pre class="code" style="background: black;"&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;SELECT TOP &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;(&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(255, 205, 34);"&gt;45&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;) &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]     &lt;br /&gt;                   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]         &lt;br /&gt;                   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Producto]              &lt;br /&gt;                   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Producto]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Valor] &lt;br /&gt;                   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Valor]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura]&lt;br /&gt;                   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C1]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C2]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id1]&lt;br /&gt;                   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion1]&lt;br /&gt;                   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]&lt;br /&gt;                   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario]&lt;br /&gt;                   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario]
&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;FROM   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;(&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;SELECT &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;br /&gt;                                  &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;br /&gt;                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Producto]&lt;br /&gt;                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Producto]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Valor]&lt;br /&gt;                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Valor]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura]&lt;br /&gt;                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id1]&lt;br /&gt;                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion1]&lt;br /&gt;                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]&lt;br /&gt;                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario]&lt;br /&gt;                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C1]&lt;br /&gt;                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C2]&lt;br /&gt;                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
             &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(201, 117, 213);"&gt;row_number&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;() &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;OVER &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;(&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ORDER BY &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ASC&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;)&lt;br /&gt;                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[row_number]
        &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;FROM   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;(&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;SELECT &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Producto]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Producto]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Valor]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Valor]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(203, 65, 65);"&gt;N'UsuarioTiendas'&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(203, 65, 65);"&gt;N'UsuarioTiendas'&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C2]
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;FROM   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[dbo]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Facturas] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;INNER JOIN &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[dbo]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTiendas]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent2]
                         &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ON &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;= &lt;br /&gt;&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;) &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;) &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]
&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;WHERE  &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[row_number] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;&amp;gt; &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(255, 205, 34);"&gt;0
&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ORDER  BY &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ASC&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;Consulta 3: Reporte&lt;/p&gt;

    &lt;p&gt;&lt;img alt="" src="http://jramirezdev.net/blog/Media/Default/WebsiteFiles/query3.PNG" width="911" height="163" /&gt;&lt;/p&gt;

    &lt;p&gt;Consulta 3: Entity SQL Generado&lt;/p&gt;

    &lt;pre class="code" style="background: black;"&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;SELECT TOP &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;(&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(255, 205, 34);"&gt;45&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;) &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;br /&gt;            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Producto]&lt;br /&gt;              &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Producto]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Valor]&lt;br /&gt;                 &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Valor]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura]&lt;br /&gt; &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C1]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C2]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id1]&lt;br /&gt;                   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion1]&lt;br /&gt;           &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]&lt;br /&gt;  &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario]&lt;br /&gt; &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario]
&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;FROM   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;(&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;SELECT &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;br /&gt;                                  &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;br /&gt;                          &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Producto]&lt;br /&gt;                            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Producto]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Valor]&lt;br /&gt;                               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Valor]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura]&lt;br /&gt;               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id1]&lt;br /&gt;                                 &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion1]&lt;br /&gt;                         &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]&lt;br /&gt;                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario]&lt;br /&gt;               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C1]&lt;br /&gt;                                  &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C2]&lt;br /&gt;                                  &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
               &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(201, 117, 213);"&gt;row_number&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;() &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;OVER &lt;br /&gt;&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;(&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ORDER BY &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ASC&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;) &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[row_number]
        &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;FROM   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;(&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;SELECT &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;br /&gt;            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Producto]&lt;br /&gt;              &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Producto]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Valor]&lt;br /&gt;                 &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Valor]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura]&lt;br /&gt; &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;br /&gt;                    &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion]&lt;br /&gt;            &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[RowVersion1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]&lt;br /&gt;  &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario]&lt;br /&gt; &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(203, 65, 65);"&gt;N'UsuarioTiendas'&lt;br /&gt;|                 &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;,
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(203, 65, 65);"&gt;N'UsuarioTiendas'&lt;br /&gt;                 &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C2]
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;FROM   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[dbo]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Facturas] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]
                       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;INNER JOIN &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[dbo]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTiendas]&lt;br /&gt; &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent2]
     &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ON &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;= &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]
                &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;WHERE  &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;EXISTS (&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;SELECT &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(255, 205, 34);"&gt;1 &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[C1]
        &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;FROM   &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[dbo]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTiendas] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent3]
       &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;INNER JOIN &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[dbo]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTiendas] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent4]
       O&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;N &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent3]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;= &lt;br /&gt;&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent4]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Tienda_UsuarioTienda]
      &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;INNER JOIN &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[dbo]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Usuarios] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent5]
      &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ON &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent4]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Usuario] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;= &lt;br /&gt;&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent5]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]
      &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;WHERE  &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;(&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent1]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[UsuarioTienda_Factura] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;= &lt;br /&gt;&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent3]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;)
      AND (&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(203, 65, 65);"&gt;N'Jorge Ramirez' &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;= &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Extent5]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Nombre]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;))) &lt;br /&gt;&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;) &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;AS &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]
&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;WHERE  &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[row_number] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;&amp;gt; &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(255, 205, 34);"&gt;0
&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ORDER  BY &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Project2]&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(129, 129, 129);"&gt;.&lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(241, 242, 243);"&gt;[Id] &lt;/span&gt;&lt;span style="background: rgb(34, 40, 42); color: rgb(147, 199, 99);"&gt;ASC&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;Nota: El perfilador usado fue &lt;a href="http://www.hibernatingrhinos.com/products/EFProf" target="_blank"&gt;Entity Framework Profiler,&lt;/a&gt; podemos aprender como usarlo &lt;a href="http://ayende.com/blog/4604/profiling-lightswitch-using-entity-framework-profiler"&gt;Aquí&lt;/a&gt;.&lt;/p&gt;

    &lt;p&gt;Con esto hemos finalizado el proceso de creación y análisis de consultas LINQ to Entities en LightSwitch.&lt;/p&gt;

    &lt;p&gt;Muchas Gracias.&lt;/p&gt;

    &lt;p&gt;
      &lt;br /&gt;&lt;a href="https://www.facebook.com/jorge.ramirez"&gt;&lt;em&gt;&lt;font size="2"&gt;Jorge Ramírez&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;/em&gt;&lt;a href="http://twitter.com/JramirezDev"&gt;&lt;em&gt;&lt;font size="2"&gt;@JramirezDev&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;font size="2"&gt;): Es Tecnólogo de Sistemas y estudiante de Ingeniería de Sistemas, con 4 años de experiencia en desarrollo de BackEnd y FrontEnd usando .NET Framework; especialista en LINQ y WCF.&amp;#160; Encuentren la versión original de este post y mucho contenido adicional muy interesante en su &lt;/font&gt;&lt;/em&gt;&lt;a href="http://jramirezdev.net/blog/linq-consultando-tablas-cruzadas-en-visual-studio-lightswitch"&gt;&lt;em&gt;&lt;font size="2"&gt;blog&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/em&gt; 

      &lt;br /&gt;

      &lt;br /&gt;

      &lt;br /&gt;

      &lt;br /&gt;

      &lt;br /&gt;&lt;/p&gt;
  &lt;/font&gt;&lt;/div&gt;

&lt;div class="fb-comments" data-width="500" data-num-posts="15" data-order-by="reverse_time" data-href="http://blogs.msdn.com/b/warnov/archive/2013/03/15/linq_2d00_consultando_2d00_tablas_2d00_cruzadas_2d00_en_2d00_visual_2d00_studio_2d00_lightswitch.aspx"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10402704" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Entity+Framework/">Entity Framework</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/LINQ/">LINQ</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Lightswitch/">Lightswitch</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/ENTITYFRAMEWORK/">ENTITYFRAMEWORK</category></item><item><title>Flash: Verdades en Windows 8</title><link>http://blogs.msdn.com/b/warnov/archive/2013/03/12/flash-en-windows-8.aspx</link><pubDate>Tue, 12 Mar 2013 19:57:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10401724</guid><dc:creator>WarNov</dc:creator><slash:comments>0</slash:comments><description>&lt;iframe style="border: currentcolor; width: 450px; height: 80px;" src="https://www.facebook.com/plugins/like.php?href=http://wnov.it/Win8Flash" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;!-- Place this tag where you want the +1 button to render --&gt;&lt;g:plusone size="small"&gt;&lt;/g:plusone&gt;&lt;!-- Place this render call where appropriate --&gt;&lt;script type="text/javascript"&gt;gapi.plusone.go();&lt;/script&gt;  &lt;div style="line-height: 150%;" align="justify"&gt;&lt;font size="3" face="Calibri"&gt;     &lt;p&gt;A partir de hoy, Flash es soportado en Windows 8 nuevamente.&lt;/p&gt;      &lt;p&gt;Qué?&lt;/p&gt;      &lt;h3&gt;Alguna vez dejó de ser soportado?&lt;/h3&gt;      &lt;p&gt;Antes de responder esta pregunta, déjenme contarles acerca de los sabores de Internet Explorer 10 en Windows 8.&lt;/p&gt;      &lt;p&gt;Básicamente son 4 sabores:&lt;/p&gt;      &lt;p&gt;2 sabores para Windows 8 sobre arquitecturas x86 y x64 (llamémoslas tradicionales) y otros 2 sabores para WindowsRT. Entonces, en las arquitecturas tradicionales los sabores de IE que tenemos son IE de escritorio y el IE de interfaz moderna o inmersiva.&lt;/p&gt;      &lt;p&gt;Lo mismo pasa en WindowsRT. Recuerden que en WindowsRT también hay un desktop, solo que ese desktop no soporta la instalación de nuevas aplicaciones. Las apps a instalarse solo pueden ser aquellas de la interfaz moderna o Windows Store. Entonces en este caso también tenemos 2 versiones de Internet Explorer. Una de desktop y otra de interfaz moderna.&lt;/p&gt;      &lt;p&gt;Cuando se lanzó Windows 8 el soporte a Flash se limitó de la siguiente manera:&lt;/p&gt;      &lt;p&gt;1. WindowsRT sólo permitía visualizar ciertos sitios web incluidos en una lista blanca, con Flash en ambos sabores del browser.        &lt;br /&gt;2. Windows 8 sólo permitía visualizar ciertos sitios web incluidos en una lista blanca, con Flash en la interfaz inmersiva o moderna.         &lt;br /&gt;3. Windows 8 tenía soporte full para visualizar todos los sitios web con Flash.&lt;/p&gt;      &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/5078.flashpluswin8_5F00_4F1065D6.png"&gt;&lt;img title="flashpluswin8" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="flashpluswin8" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/2043.flashpluswin8_5F00_thumb_5F00_34CFFCB2.png" width="240" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;h3&gt;Por qué la limitante?&lt;/h3&gt;      &lt;p&gt;Pensemos por un momento en la filosofía de Apps: Proveer un mercado de aplicaciones confiables del que solo se pueden bajar apps seguras que no vayan a hacerle ningún daño al usuario. Incluyendo ausencia de virus, spyware, troyanos y demás. Para poder lograr esto, las apps deben correr en un entorno seguro o sandbox que llaman. Del que no pueden salirse para ir a atacar o controlar otras apps. Además de esto, la filosofía de apps también incluye desarrollo amigable con la batería.&lt;/p&gt;      &lt;p&gt;Entonces lo que sucede con Flash es que algunos sitios no respetaban ese sandbox y representaban huecos de seguridad para el sistema. Así que uno piensa: para que un entorno tan protegido como el sandbox si los atacantes pueden entrar a través de flash?&lt;/p&gt;      &lt;p&gt;Además otros sitios con sus apps de flash exigían un esfuerzo enorme a los procesadores central y gráfico, lo que obviamente gastaba la batería en muy corto tiempo. Esto también derivaría en una pobre experiencia de usuario.&lt;/p&gt;      &lt;p&gt;En conclusión la limitante se impuso para proteger la experiencia de usuario. No con el ánimo de excluir a un jugador importante de la industria sin el cual por ejemplo, mucho del contenido con DRM que está en la web no podría ser presentado (recordemos que HTML5 aún no define un estándar para manejar esta tecnología. Es algo que por el momento debe definir cada códec, de manera que la tarea se hace complicada a la hora de manejarlo.)&lt;/p&gt;      &lt;h3&gt;Lista blanca?&lt;/h3&gt;      &lt;p&gt;Sí, no todos los sitios que usan flash tenían esos problemas de seguridad y performance. Así que en el pasado uno podía pedirle a Microsoft que evaluara su sitio y permitiese a Flash ejecutar el contenido.&lt;/p&gt;      &lt;h3&gt;Cuál es entonces el soporte que se brinda hoy en día&lt;/h3&gt;      &lt;p&gt;Básicamente se cambió de tener una lista blanca a una lista negra. Ahora por defecto todos los sitios con flash pueden visualizarse en cualquiera de los 4 sabores de browser descritos anteriormente, a menos de que el sitio esté plenamente identificado como inseguro o de pobre performance y por ende se haya agregado a una lista negra.&lt;/p&gt;      &lt;p&gt;TODOS los sitios con Flash que se pueden ver hoy en día en el IE desktop sobre Windows 8 (x86 y x64), se podrán seguir viendo sin ningún problema.&lt;/p&gt;      &lt;h3&gt;Cómo se logró esto?&lt;/h3&gt;      &lt;p&gt;Gracias a un trabajo conjunto entre Microsoft y Adobe, se logró adicionar a Windows 8 y Windows RT una nueva versión de Adobe Flash totalmente optimizada para el uso Inmersivo o de interfaz moderna. Esta versión es mucho más generosa con la batería, con el performance y con la seguridad del sistema y demuestra totalmente el compromiso que Microsoft tiene con los usuarios de ofrecerles la mejor experiencia, independientemente de que esto implique incluir productos de otros fabricantes.&lt;/p&gt;      &lt;h3&gt;A partir de cuándo lo puedo tener?&lt;/h3&gt;      &lt;p&gt;Como es tradicional ya con Windows 8, todos los martes podemos tenemos actualizaciones. En la de hoy, martes 12 de marzo, estaremos incluyendo esta actualización entre otras muy importantes. Por ejemplo estaremos actualizando el firmware de la Surface para corregir algunos problemas menores.&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/4011.image_5F00_65EF3752.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/0218.image_5F00_thumb_5F00_7712EF28.png" width="240" height="138" /&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;   &lt;/font&gt;&lt;/div&gt;  &lt;div class="fb-comments" data-href="http://wnov.it/Win8Flash" data-width="600" data-num-posts="15" data-order-by="reverse_time"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10401724" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Internet+Explorer/">Internet Explorer</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Windows+8/">Windows 8</category></item><item><title>WebAPI, Azure y Apps: Una implementación</title><link>http://blogs.msdn.com/b/warnov/archive/2013/03/06/webapi-azure-y-apps-una-implementaci-243-n.aspx</link><pubDate>Wed, 06 Mar 2013 23:34:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10400071</guid><dc:creator>WarNov</dc:creator><slash:comments>0</slash:comments><description>&lt;iframe style="border: currentcolor; width: 450px; height: 80px;" src="https://www.facebook.com/plugins/like.php?href=http://blogs.msdn.com/b/warnov/archive/2013/03/06/webapi-azure-y-apps-una-implementaci-243-n.aspx" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;!-- Place this tag where you want the +1 button to render --&gt;&lt;g:plusone size="small"&gt;&lt;/g:plusone&gt;&lt;!-- Place this render call where appropriate --&gt;&lt;script type="text/javascript"&gt;gapi.plusone.go();&lt;/script&gt;  &lt;div style="line-height: 150%;" align="justify"&gt;&lt;font size="3" face="Calibri"&gt;     &lt;p&gt;Esta presentación la he usado en varios eventos últimamente, como el TechDay de Cali, Medellín y algunas charlas online. Nos muestra unos temas que ya he tratado en varios de mis posts anteriormente, relacionados con Windows Azure Mobile Services, Windows Azure Storage, Web Api y Apps.&lt;/p&gt;      &lt;p&gt;Aquí quise integrar todos esos posts en un ejemplo de la vida real, al que le damos solución de una manera bastante sencilla:&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;Cómo compartir archivos desde un dispositivo móvil a otros, a través de una Plataforma propia.&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;Toda la teoría relativa a esta demostración la puedes encontrar &lt;a href="http://blogs.msdn.com/b/warnov/archive/2012/11/16/usando-webapi-para-generar-azure-sas-para-tus-apps.aspx"&gt;aquí&lt;/a&gt;.&lt;/p&gt;      &lt;p&gt;Veamos pues la presentación en video:&lt;/p&gt;      &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/zx8HoMatCfg" frameborder="0" width="560" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;   &lt;/font&gt;&lt;/div&gt;  &lt;div class="fb-comments" data-order-by="reverse_time" data-num-posts="15" data-width="500" data-href="http://blogs.msdn.com/b/warnov/archive/2013/03/06/webapi-azure-y-apps-una-implementaci-243-n.aspx"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10400071" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Azure/">Azure</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/REST/">REST</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Windows+Phone+7/">Windows Phone 7</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/MVC/">MVC</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Windows+8/">Windows 8</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/apps/">apps</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Windows+Phone+8/">Windows Phone 8</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/WinRT/">WinRT</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/WebApi/">WebApi</category></item><item><title>Noding w/ @WarNov. Episodio 2: JavaScript para Orientados a Objetos</title><link>http://blogs.msdn.com/b/warnov/archive/2013/03/04/noding-w-warnov-episodio-2-javascript-para-orientados-a-objetos.aspx</link><pubDate>Mon, 04 Mar 2013 23:01:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10399300</guid><dc:creator>WarNov</dc:creator><slash:comments>0</slash:comments><description>&lt;iframe style="border: currentcolor; width: 450px; height: 80px;" src="https://www.facebook.com/plugins/like.php?href=http://wnov.it/NodingWarNov2Post" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;   &lt;div style="line-height: 150%;" align="justify"&gt;&lt;font size="3" face="Calibri"&gt;     &lt;p&gt;Luego de la gran acogida del episodio de lanzamiento del curso de NodeJS que publiqué hace unos días, me permito presentarles en esta ocasión el segundo capítulo de la serie. Saliendo un poco más tarde de lo planeado debido a que lo que inicialmente concebí como un pequeño tutorial de&amp;#160; JavaScript, terminó siendo un curso completo de 1 hora.&lt;/p&gt;      &lt;p&gt;Esto me exigió repasar nuevamente toda la teoría (Una semana de lectura) y luego condensar todo esto en la menor cantidad de tiempo en video que pude durante un proceso de edición de 8 horas.&lt;/p&gt;      &lt;p&gt;Finalmente, aquí está el resultado:&lt;/p&gt;      &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/0250.image_5F00_130AEF26.png"&gt;&lt;img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/2061.image_5F00_thumb_5F00_29E9C0A2.png" width="240" height="203" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;Un recorrido súper rápido por JavaScript. Como ustedes sabrán del primer capítulo, es el lenguaje protagonista en NodeJS. Así que en este episodio encontrarán los aspectos fundamentales del lenguaje ha tener en cuenta.&lt;/p&gt;      &lt;p&gt;El episodio está enfocado a desarrolladores orientados a objetos en lenguajes tradicionales (De allí el título del mismo). De manera que si eres experto en C#, C++ o VB pero no has estado en contacto muy profundo con JavaScript, este curso será excelente no solo para que comiences luego con Node.JS sino también con Apps para Windows 8 en JavaScript + HTML5, HTML5 en el browser, JQuery, LIGHTSWITCH basado en HTML5 y hasta Napa: el conjunto de tools para hacer apps basadas en Office. Así pues, es un episodio que te abrirá las puertas a muchas otras tecnologías.&lt;/p&gt;      &lt;p&gt;Este es el segundo episodio de Noding w/ @WarNov. El curso rápido de Node.js que te permitirá de manera rápida y fácil aprender de qué se trata Node.js y cómo utilizarlo.&lt;/p&gt;      &lt;p&gt;Este episodio es un recorrido rápido por JavaScript para developers Orientados a Objetos (aquellos con experiencia en lenguajes como C++, C# o VB), que aunque han tenido contacto con JavaScript no tienen los conocimientos avanzados de ese lenguaje para poder incursionar en Node.js. Ya vimos en el episodio anterior que JavaScript es central en Node.js. Por esto es necesario tener conocimientos sólidos del lenguaje antes de arrancar con Node.js.&lt;/p&gt;      &lt;p&gt;Adicionalmente, en este video muestro como integrar Visual Studio con Node.js a través de la consola de comandos de NuGet Package Manager.&lt;/p&gt;      &lt;p&gt;Si ya eres experto en JavaScript y deseas pasar de inmediato a NodeJS, puedes hacer skip de este episodio y continuar con el siguiente.&lt;/p&gt;      &lt;p&gt;Sin más preámbulos, aquí los dejo con Noding w/ @WarNov. Episodio 2: JavaScript para Orientados a Objetos.&lt;/p&gt;      &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/6z0OCAAtCMk" frameborder="0" width="560" allowfullscreen="allowfullscreen"&gt;&amp;amp;amp;#160;&lt;/iframe&gt;&lt;/p&gt;   &lt;/font&gt;&lt;/div&gt;  &lt;div class="fb-comments" data-order-by="reverse_time" data-num-posts="15" data-width="450" data-href="http://wnov.it/NodingWarNov2Post"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10399300" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/warnov/archive/tags/JavaScript/">JavaScript</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/OSS/">OSS</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Nodejs/">Nodejs</category></item><item><title>Office 365 for Developers!</title><link>http://blogs.msdn.com/b/warnov/archive/2013/02/27/office-365-for-developers.aspx</link><pubDate>Wed, 27 Feb 2013 23:01:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10397955</guid><dc:creator>WarNov</dc:creator><slash:comments>0</slash:comments><description>&lt;iframe style="border: currentcolor; width: 450px; height: 80px;" src="https://www.facebook.com/plugins/like.php?href=http://blogs.msdn.com/b/warnov/archive/2013/02/27/office-365-for-developers.aspx" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;!-- Place this tag where you want the +1 button to render --&gt;&lt;g:plusone size="small"&gt;&lt;/g:plusone&gt;  &lt;div style="line-height: 150%;" align="justify"&gt;&lt;font size="3" face="Calibri"&gt;&lt;!-- Place this render call where appropriate --&gt;&lt;script type="text/javascript"&gt;gapi.plusone.go();&lt;/script&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/2185.Office_2D00_365msdn_5F00_5B5C5AEA.jpg"&gt;&lt;img title="Office 365 msdn" style="border: 0px currentcolor; margin-right: 0px; margin-left: 0px; display: inline; background-image: none;" border="0" alt="Office 365 msdn" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-28-02-metablogapi/2526.Office_2D00_365msdn_5F00_thumb_5F00_0798E1CF.jpg" width="240" height="189" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;Así es para subscriptores Ultimate y Premium de MSDN        &lt;br /&gt;Por un año!&lt;/p&gt;      &lt;p&gt;Todas las herramientas y recursos requeridos para comenzar a construir y probar apps de Office 365:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;Un sitio en SharePoint Online personalizado para crear y personalizar apps&lt;/li&gt;        &lt;li&gt;Acceso a las herramientas de Desarrollo Napa para crear y probar apps&lt;/li&gt;        &lt;li&gt;Un Microsoft Seller Dashboard para exponer apps gratis y pagas para vender en el Office Store.&lt;/li&gt;     &lt;/ul&gt;      &lt;p&gt;Por ahora no hay disponibilidad para suscripciones adquiridas a través de programas especiales como Bizspark.&lt;/p&gt;      &lt;p&gt;La suscripción igual se puede comprar &lt;a href="http://msdn.microsoft.com/en-us/library/fp179924.aspx"&gt;aquí&lt;/a&gt;.&lt;/p&gt;      &lt;p&gt;       &lt;br /&gt;Más información acerca de cómo construir Office y SharePoint apps, próximamente en este blog.&lt;/p&gt;   &lt;/font&gt;&lt;/div&gt; &lt;div class="fb-comments" data-order-by="reverse_time" data-num-posts="15" data-width="450" data-href="http://blogs.msdn.com/b/warnov/archive/2013/02/27/office-365-for-developers.aspx"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10397955" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/warnov/archive/tags/Office/">Office</category><category domain="http://blogs.msdn.com/b/warnov/archive/tags/apps/">apps</category></item></channel></rss>