<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0"><channel><title>El blog de Javier Torrecilla</title><link>http://geeks.ms/blogs/jtorrecilla/default.aspx</link><description>Un Blog sobre mi experiencias con .NET( VB, C#, ASP.NEt, MVC, SL...) Y alguna cosilla de BD</description><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ElBlogDeJavierTorrecilla" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="elblogdejaviertorrecilla" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">ElBlogDeJavierTorrecilla</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item><title>[Básico]Enumerados con tipo distinto de Int</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/05/14/b-225-sico-enumerados-con-tipo-distinto-de-int.aspx</link><pubDate>Mon, 14 May 2012 09:24:37 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205003</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=205003</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/05/14/b-225-sico-enumerados-con-tipo-distinto-de-int.aspx#comments</comments><description>&lt;h4&gt;Introducción:&lt;/h4&gt;  &lt;p&gt;En este post vamos a ver como utilizar otros tipos de datos numéricos dentro de una enumeración.&lt;/p&gt;  &lt;p&gt;Si bien, no es un problema que nos vayamos a encontrar a menudo, pero que podamos realizarlo si lo necesitamos.&lt;/p&gt;  &lt;h4&gt;Al lio:&lt;/h4&gt;  &lt;p&gt;A la hora de definir nuestro enumerado tendremos que indicar uno de los siguientes valores:&lt;/p&gt;  &lt;p&gt;- Byte&lt;/p&gt;  &lt;p&gt;- SByte&lt;/p&gt;  &lt;p&gt;- Short &lt;/p&gt;  &lt;p&gt;- UShort&lt;/p&gt;  &lt;p&gt;- Long&lt;/p&gt;  &lt;p&gt;- ULong&lt;/p&gt;  &lt;p&gt;- UInt&lt;/p&gt;  &lt;p&gt;Ejemplo:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;enum&lt;/span&gt; MyLongEnum  :&lt;span style="color:#0000ff;"&gt;long&lt;/span&gt;    &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     Value = 1569874585236L&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Para que posteriormente podamos utilizar dicho valor desde nuestro código será necesario hacer una conversión:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; var myValue = (&lt;span style="color:#0000ff;"&gt;long&lt;/span&gt;)MyLongEnum.Value;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Espero que os sea de utilidad.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Saludos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205003" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/Thpc8cDwE2A" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/BASICO/default.aspx">BASICO</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>WinRT: Establecer un estilo Condicional (2) #Metro #Win8</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/04/26/winrt-establecer-un-estilo-condicional-2-metro-win8.aspx</link><pubDate>Thu, 26 Apr 2012 08:17:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:204688</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=204688</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/04/26/winrt-establecer-un-estilo-condicional-2-metro-win8.aspx#comments</comments><description>&lt;h4&gt;Introducci&amp;oacute;n&lt;/h4&gt;
&lt;p&gt;Ayer publique una &lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/04/25/winrt-establecer-un-estilo-condicional-metro-win8.aspx"&gt;entrada&lt;/a&gt; en la que hablaba de aplicar un estilo condicional a un control en xaml.&lt;/p&gt;
&lt;p&gt;Despu&amp;eacute;s de&amp;nbsp; revisar si se puede utilizar &lt;a href="http://msdn.microsoft.com/es-es/library/system.windows.controls.styleselector.aspx"&gt;StyleSelector&lt;/a&gt; o &lt;a href="http://msdn.microsoft.com/es-es/library/system.windows.controls.datatemplateselector.aspx"&gt;DataTemplateSelector&lt;/a&gt;, ambos son v&amp;aacute;lidos a aplicar para un control como el ListBox, pero no por ejemplo para un TextBox o un TextBlock.&lt;/p&gt;
&lt;h4&gt;C&amp;oacute;digo V2:&lt;/h4&gt;
&lt;p&gt;Dandole una peque&amp;ntilde;a vuelta de tuerca, y a pesar que me sigue pareciendo un &amp;ldquo;Bad Code Smell&amp;rdquo;, me he creado un nuevo converter:&lt;/p&gt;
&lt;div style="cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:97.5%;overflow:auto;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;line-height:12pt;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; BooleanStyleConverter : IValueConverter&lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; Convert(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;, Type targetType, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; parameter, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; language)&lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     {&lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;         var page = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MyXamlPage();&lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; ((&lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt;)&lt;span style="color:#0000ff;"&gt;value&lt;/span&gt; ? page.Resources[&lt;span style="color:#006080;"&gt;&amp;quot;StyleA&amp;quot;&lt;/span&gt;] &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; Style : page.Resources[&lt;span style="color:#006080;"&gt;&amp;quot;StyleB&amp;quot;&lt;/span&gt;] &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; Style);&lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;     }&lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; ConvertBack(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;, Type targetType, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; parameter, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; language)&lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;     {&lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; NotImplementedException();&lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;

&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;En el converter se define la pagina donde se encuentran los estilos, y nuestro control, y a trav&amp;eacute;s del diccionario de recursos devolvemos un estilo seg&amp;uacute;n nuestro condicionante.&lt;/p&gt;
&lt;p&gt;Su aplicaci&amp;oacute;n en&amp;nbsp; c&amp;oacute;digo:&lt;/p&gt;
&lt;p&gt;1) Definir el converter en los recursos:&lt;/p&gt;
&lt;div style="cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:97.5%;overflow:auto;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;line-height:12pt;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &amp;lt;converters:BooleanStyleConverter x:Name=&lt;span style="color:#006080;"&gt;&amp;quot;GenderConverter&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;2) Definir nuestro control con su Binding y Converter:&lt;/p&gt;
&lt;div style="cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:97.5%;overflow:auto;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;line-height:12pt;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;color:black;overflow:visible;direction:ltr;text-align:left;margin:0em;line-height:12pt;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &amp;lt;TextBlock Text=&lt;span style="color:#006080;"&gt;&amp;quot;{Binding Child.Name}&amp;quot;&lt;/span&gt; Style=&lt;span style="color:#006080;"&gt;&amp;quot;{Binding Child.Gender,Converter={StaticResource GenderConverter}}&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Espero que os sea de utilidad, o si veis alguna opci&amp;oacute;n mejor, lo comenteis &lt;img src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jtorrecilla/wlEmoticon_2D00_openmouthedsmile_5F00_590741DC.png" alt="Open-mouthed smile" style="border-top-style:none;border-bottom-style:none;border-right-style:none;border-left-style:none;" class="wlEmoticon wlEmoticon-openmouthedsmile" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Saludos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=204688" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/kNXsBYxHA2k" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/WPF/default.aspx">WPF</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VS11/default.aspx">VS11</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/c_2300_4.5/default.aspx">c#4.5</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/WinRT/default.aspx">WinRT</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Win8/default.aspx">Win8</category></item><item><title>WinRT: Establecer un estilo Condicional #Metro #Win8</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/04/25/winrt-establecer-un-estilo-condicional-metro-win8.aspx</link><pubDate>Wed, 25 Apr 2012 11:36:23 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:204656</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=204656</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/04/25/winrt-establecer-un-estilo-condicional-metro-win8.aspx#comments</comments><description>&lt;h4&gt;Introducción&lt;/h4&gt;  &lt;p&gt;Estoy realizando una pequeña app para Windows8 con WinRT y Metro.&lt;/p&gt;  &lt;p&gt;Pese a que no soy ningun experto en WPF, creo que condicionar el estilo a un elemento de Binding era algo trivial en WPF o Silverlight, en WinRT, (espero que de momento) no lo es.&lt;/p&gt;  &lt;h4&gt;Solución que hemos hablado por Twitter&lt;/h4&gt;  &lt;p&gt;En una conversación mantenida con @Antiocool y con @CorsarioVasco, hablabamos de definir 2 bloques de texto, uno para cada estilo (puesto que el condicional era para un booleano) y cada uno tuviera el estilo correspondiente. Y jugar con la visibilidad del segundo con respecto de la visibilidad del primero. Pese a que es un poco “BADSMELL”, de momento es la “única” solución rápida que he encontrado.&lt;/p&gt;  &lt;p&gt;1) Partiendo de un Converter BooleanToVisibility&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;width:97.5%;border-bottom:silver 1px solid;overflow:auto;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;background-color:#f4f4f4;"&gt;   &lt;div id="codeSnippet" style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; BooleanToVisibilityConverter : IValueConverter &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt;  {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;      &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; Convert(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;, Type targetType, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; parameter, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; language)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;      {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;          &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; val = (&lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt;)&lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;          &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; (val ? Visibility.Visible : Visibility.Collapsed);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;            &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;      }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;      &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; ConvertBack(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;, Type targetType, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; parameter, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; language)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;      {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;          var val = (Visibility)&lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;          &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; (val == Visibility.Visible);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;      }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt;  }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;2) Definiremos un Visibility Inverter Converter:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;width:97.5%;border-bottom:silver 1px solid;overflow:auto;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; VisibilityInverterConverter : IValueConverter &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; Convert(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;, Type targetType, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; parameter, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; language)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; ((Visibility)&lt;span style="color:#0000ff;"&gt;value&lt;/span&gt; == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; ConvertBack(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;, Type targetType, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; parameter, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; language)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; ((Visibility)&lt;span style="color:#0000ff;"&gt;value&lt;/span&gt; == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;     }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;3) Escribiremos el xaml necesario para utilizarlo:&lt;/p&gt;

&lt;p&gt;3.1) Definimos los converters como recursos:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;width:97.5%;border-bottom:silver 1px solid;overflow:auto;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &amp;lt;UserControl.Resources&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt;        &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;        &amp;lt;!-- TODO: Delete &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt; line &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; the key AppName &lt;span style="color:#0000ff;"&gt;is&lt;/span&gt; declared &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; App.xaml --&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;        &amp;lt;converters:BooleanToVisibilityConverter x:Name=&lt;span style="color:#006080;"&gt;&amp;quot;BooleanConverter&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;        &amp;lt;converters:VisibilityInverterConverter x:Name=&lt;span style="color:#006080;"&gt;&amp;quot;VisibilityConverter&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;    &amp;lt;/UserControl.Resources&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt; &amp;lt;/UserControl.Resources&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;3.2) Definimos los bindings necesarios:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;width:97.5%;border-bottom:silver 1px solid;overflow:auto;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &amp;lt;TextBlock x:Name=&lt;span style="color:#006080;"&gt;&amp;quot;tName&amp;quot;&lt;/span&gt; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt;     Text=&lt;span style="color:#006080;"&gt;&amp;quot;{Binding Child.Name}&amp;quot;&lt;/span&gt; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     Visibility=&lt;span style="color:#006080;"&gt;&amp;quot;{Binding Child.Gender,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;                 Converter={StaticResource BooleanConverter}}&amp;quot;&lt;/span&gt; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;                 Grid.Row=&lt;span style="color:#006080;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; Grid.ColumnSpan=&lt;span style="color:#006080;"&gt;&amp;quot;3&amp;quot;&lt;/span&gt; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;                 Style=&lt;span style="color:#006080;"&gt;&amp;quot;{StaticResource ChildNameStyle}&amp;quot;&lt;/span&gt; d:LayoutOverrides=&lt;span style="color:#006080;"&gt;&amp;quot;Margin&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt; &amp;lt;TextBlock Text=&lt;span style="color:#006080;"&gt;&amp;quot;{Binding Child.Name}&amp;quot;&lt;/span&gt; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;             Visibility=&lt;span style="color:#006080;"&gt;&amp;quot;{Binding ElementName=tName, &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;             Path=Visibility,Converter={StaticResource VisibilityConverter}}&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;              Grid.Row=&lt;span style="color:#006080;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; Grid.ColumnSpan=&lt;span style="color:#006080;"&gt;&amp;quot;3&amp;quot;&lt;/span&gt; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;             Style=&lt;span style="color:#006080;"&gt;&amp;quot;{StaticResource ChildNameStyleGirl}&amp;quot;&lt;/span&gt; d:LayoutOverrides=&lt;span style="color:#006080;"&gt;&amp;quot;Margin&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;   &lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
Como se puede observar cada TextBlock tiene el mismo texto asignado, y cambia el estilo. 







&lt;p&gt;La propiedad Visivility del segundo TextBlock está asignada a la misma propiedad del primer TextBlock aplicando el converter que hemos definido previamente.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Espero que os sea de utilidad y/o si conoceis otra alternativa, por favor comentarla!.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Saludos!!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=204656" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/dFOxlyJKUG4" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VS11/default.aspx">VS11</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/c_2300_4.5/default.aspx">c#4.5</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/WinRT/default.aspx">WinRT</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Win8/default.aspx">Win8</category></item><item><title>Win8: Serializar y Deserializar con WinRT C#</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/04/23/win8-serializar-y-deserializar-con-winrt-c.aspx</link><pubDate>Mon, 23 Apr 2012 10:49:19 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:204598</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=204598</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/04/23/win8-serializar-y-deserializar-con-winrt-c.aspx#comments</comments><description>&lt;h4&gt;Introducción&lt;/h4&gt;  &lt;p&gt;En este breve post vamos a ver como llevar a cabo la serialización de objetos dentro de una aplicación metro con WinRT y C#.&lt;/p&gt;  &lt;h4&gt;Código&lt;/h4&gt;  &lt;p&gt;Partiendo de una clase tipo:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Employee&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; Id { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; FirstName { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; LastName { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; DateTime BirthDate { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Serializando un objeto:&lt;/u&gt;&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; Employee obj;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (var fileStream = await ApplicationData.Current.RoamingFolder.OpenStreamForWriteAsync(String.Format(&lt;span style="color:#006080;"&gt;&amp;quot;ci{0}{1}.xml&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;  obj.LastName, obj.FirstName), &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;                     CreationCollisionOption.ReplaceExisting))&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;                 {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;                     var serializer = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XmlSerializer(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(ChildInfo));&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;                     serializer.Serialize(fileStream, obj);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;                 }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Deserializando un objeto:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; Employee obj;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; sing(var fileStream = await ApplicationData.Current.RoamingFolder.OpenStreamForReadAsync(root))&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;    XmlSerializer serializer=&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XmlSerializer(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(Employee));&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;    obj = (Employee)serializer.Deserialize(fileStream);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Espero que os sirva.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Saludos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=204598" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/FI4H5WrCYy4" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/BASICO/default.aspx">BASICO</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Async/default.aspx">Async</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Await/default.aspx">Await</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/c_2300_4.5/default.aspx">c#4.5</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/WinRT/default.aspx">WinRT</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Win8/default.aspx">Win8</category></item><item><title>MVC: Trabajando con campos con etiquetas HTML</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/04/10/mvc-trabajando-con-campos-con-etiquetas-html.aspx</link><pubDate>Tue, 10 Apr 2012 11:54:43 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:204382</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=204382</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/04/10/mvc-trabajando-con-campos-con-etiquetas-html.aspx#comments</comments><description>&lt;h4&gt;Introducción:&lt;/h4&gt;  &lt;p&gt;En este post vamos a ver como trabajar con un modelo donde una de nuestras propiedades va a almacenar valores de tipo HTML, como por ejemplo el contenido del post de un blog:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &amp;lt;p&amp;gt;Este el texto del post, con un enlace &amp;lt;a href=&lt;span style="color:#006080;"&gt;&amp;#39;http://bing.com&amp;#39;&lt;/span&gt;&amp;gt;bing&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4&gt;Abordando el problema:&lt;/h4&gt;

&lt;p&gt;Partiendo de un modelo sencillo:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Post&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Guid ID { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Title { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Content { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;donde nuestra propiedad “Content” va a ser la que va almacenar el código HTML vamos a cualificarla con el atributo &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.allowhtmlattribute(v=vs.98).aspx" target="_blank"&gt;AllowHtml&lt;/a&gt;, para que en el momento de grabar nuestros post desde el explorador, permitirá evitar la validación de dicho campo sin tener que comprobar las etiquetas HTML introducidas en él.&lt;/p&gt;

&lt;p&gt;Posteriormente para poder visualizar nuestro HTML con el formato HTML, vamos a hacer uso del método &lt;a href="http://msdn.microsoft.com/en-us/library/gg480740(v=vs.98).aspx" target="_blank"&gt;Raw&lt;/a&gt; del Helper HTML, por lo que el contenido de nuestra vista quedaría:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; @&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (var c &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; Model)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &amp;lt;article&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;         &amp;lt;h1&amp;gt;@c.Title&amp;lt;/h1&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         @Html.Raw(@c.Content)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     &amp;lt;/article&amp;gt; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Espero que os sea de utilidad.&lt;/p&gt;

&lt;p&gt;Saludos!!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=204382" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/P04HMANe9b8" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/MVC/default.aspx">MVC</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Convertir un IEnumerable&lt;T&gt; a DataTable</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/04/04/convertir-un-ienumerable-lt-t-gt-a-datatable.aspx</link><pubDate>Wed, 04 Apr 2012 10:15:35 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:204306</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=204306</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/04/04/convertir-un-ienumerable-lt-t-gt-a-datatable.aspx#comments</comments><description>&lt;h4&gt;Introducción&lt;/h4&gt;  &lt;p&gt;En este post vamos a ver como llevar a cabo la exportación de un objeto IEnumerable&amp;lt;T&amp;gt; a un DataTable. Pero, espera!!! Ya existe un &lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2011/01/11/tip-rapido-m-233-todo-extensor.aspx" target="_blank"&gt;método extensor&lt;/a&gt; &lt;a href="http://msdn.microsoft.com/es-es/library/bb396189.aspx" target="_blank"&gt;CopyToDataTable&lt;/a&gt;, que parece realizar esta acción.&lt;/p&gt;  &lt;p&gt;Todo parece que sí, pero parece demasiado bonito. Si nos fijamos en la firma del método:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; DataTable CopyToDataTable&amp;lt;T&amp;gt;(&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt; IEnumerable&amp;lt;T&amp;gt; source&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; )&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt; T : DataRow&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Veremos que este método, solo lo podremos utilizar en el caso de que T sea de tipo DataRow o implemente a DataRow.&lt;/p&gt;

&lt;p&gt;Bueno, el porque del post es debido a una preguntaba que lanzó ayer en Twitter @&lt;a href="https://twitter.com/#!/Zpektrum" target="_blank"&gt;Zpektrum&lt;/a&gt;, sobre porque no podía utilizar dicho método con una consulta Linq.&lt;/p&gt;

&lt;h4&gt;Código:&lt;/h4&gt;

&lt;p&gt;Para ilustrar el ejemplo vamos a ver una query linq contra un DataTable:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; var query = from t &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; dt1.AsEnumerable()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;                         select &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;                         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;                             ID = t.Field&amp;lt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color:#006080;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;),&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;                             Nombre = t.Field&amp;lt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color:#006080;"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;                         };&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Como podeís apreciar estamos realizando una consulta sobre las filas de la tabla dt1, y escogiendo las columnas ID y Nombre. El resultado de esta consulta va a devolver un IEnumerable&amp;lt;T&amp;gt; donde T va a ser un tipo anónimo, por lo que dicho tipo no va a ser DataRow y no vamos a tener disponible el método CopyToDataTable.&lt;/p&gt;

&lt;p&gt;Bien, para construir nuestro nuevo método extensor, tendremos que definir una nueva clase estática y un método estático que retorne un objeto de Tipo DataTable, y haremos que el método sea genérico.&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; IEnumerableExtensions&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; DataTable CopyAnonymusToDataTable&amp;lt;T&amp;gt;(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt; IEnumerable&amp;lt;T&amp;gt; info)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;             var type = &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(T);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (type.Equals(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(DataRow))) &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; (info &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; IEnumerable&amp;lt;DataRow&amp;gt;).CopyToDataTable();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;             DataTable dt = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DataTable();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;             DataRow r;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;             type.GetProperties().ToList().ForEach(a=&amp;gt;  dt.Columns.Add(a.Name));&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (var c &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; info)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;             {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;                 r = dt.NewRow();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;                 c.GetType().GetProperties().ToList().ForEach(a =&amp;gt; r[a.Name] = a.GetValue(c,&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;));&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;                 dt.Rows.Add(r);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;             }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; dt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;         &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;     }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Para que el método sea un método extensor es necesario que sea estático, que este contenido en una clase estática y que su primer parámetro tenga el modificador “this” y el tipo que va a extender.&lt;/p&gt;

&lt;h4&gt;Explicando el método:&lt;/h4&gt;

&lt;p&gt;El método es sencillo, en primer lugar comprobamos que si el tipo de T es DataRow que ejecute el método CopyToDataTable ya existente.&lt;/p&gt;

&lt;p&gt;En caso contrario, a través de reflectión obtendremos las propiedades del Tipo T, e iremos definiendo nuevas columnas con el nombre de dichas propiedades en la tabla resultante.&lt;/p&gt;

&lt;p&gt;Por último, iteraremos sobre el contenido de la colección e iremos agregando las filas para devolverlos.&lt;/p&gt;

&lt;h4&gt;Ejecución del método:&lt;/h4&gt;

&lt;p&gt;Continuando con el ejemplo anterior:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; var query = (from t &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; dt1.AsEnumerable()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;                         select &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;                         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;                             ID = t.Field&amp;lt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color:#006080;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;),&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;                             Nombre = t.Field&amp;lt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color:#006080;"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;                         }).CopyAnonymusToDataTable();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;De está manera query, será de tipo DataTable y ya podremos manejar dicha tabla a nuestro gusto.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Un saludo y espero que os sea de utilidad.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=204306" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/VaNRCs6g6lA" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VS/default.aspx">VS</category></item><item><title>Usando Enumeraciones en Entity Framework 5.0</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/03/21/usando-enumeraciones-en-entity-framework-5-0.aspx</link><pubDate>Wed, 21 Mar 2012 07:47:03 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:203941</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=203941</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/03/21/usando-enumeraciones-en-entity-framework-5-0.aspx#comments</comments><description>&lt;h4&gt;Introducción&lt;/h4&gt;  &lt;p&gt;Es bastante probable que en alguna de las tablas de vuestras bases de datos tengas alguna propiedad de tipo Integer para representar una clave ajena de una tabla que no suele cambiar.&lt;/p&gt;  &lt;p&gt;¿Por qué no utilizar una enumeración en lugar de otra tabla en la Base de Datos?&lt;/p&gt;  &lt;p&gt;Bien, con Entity Framework 5.0 Beta 1 podemos hacer uso de enumeraciones en nuestras entidades sin tener que hacer ninguna chapuza. Esta versión es para VS11 con .NET 4.5. El trabajo con Enums ya se pudo probar con una CTP que salio en Junio de 2011 con Database First y Model First, pero no con Code First.&lt;/p&gt;  &lt;p&gt;En este post vamos a ver como realizarlo en los distintos enfoques existentes.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Database First y Model First&lt;/h4&gt;  &lt;p&gt;Ya que Database First y Model First son dos enfoques muy similares vamos a tratarlos en común.&lt;/p&gt;  &lt;p&gt;Para empezar:&lt;/p&gt;  &lt;p&gt;1) Definiremos un nuevo proyecto, por ejemplo: una aplicación de consola.&lt;/p&gt;  &lt;p&gt;2) Agregaremos nuestro Entity Data Model indicando nuestra Base de Datos y tablas.&lt;/p&gt;  &lt;p&gt;3) Dentro del explorador del modelo de nuestro diagrama, veremos una nueva carpeta “Enum Types”. Pulsaremos con el botón secundario del ratón, y elegiremos la opción “Add Enum Type”. Configuraremos las características: Nombre, tipo de dato, y los miembros:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://desmond.imageshack.us/Himg836/scaled.php?server=836&amp;amp;filename=browserh.png&amp;amp;res=medium" alt="" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://desmond.imageshack.us/Himg571/scaled.php?server=571&amp;amp;filename=enum.png&amp;amp;res=medium" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;4) Asignación de la enumeración a una propiedad escalar: Desde la ventana de propiedades&lt;/p&gt;  &lt;p&gt;&lt;img src="http://desmond.imageshack.us/Himg220/scaled.php?server=220&amp;amp;filename=typec.png&amp;amp;res=medium" alt="" /&gt; &lt;/p&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;Code First&lt;/h4&gt;  &lt;p&gt;Para usarlo seguiremos estos pasos:&lt;/p&gt;  &lt;p&gt;1) Definiremos nuestra enumeración: &lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;enum&lt;/span&gt; Category&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     Technology,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     Computer,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     Games&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;2) Definiremos nuestra entidad:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Products&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; Id {get;set;}&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Name {get;set;}&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Category Category {get;set;}&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;3) Incluiremos la colección en nuestro contexto:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Context : DbContext&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; DbSet&amp;lt;Product&amp;gt; Products {get;set;}&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;4) En el momento de la definición de la Base de Datos va a definir una columna llamada Category de tipo Integer en nuestra Base de Datos.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;Haciendo Consultas&lt;/h4&gt;

&lt;p&gt;Como las enumeraciones no estaban soportadas en versiones anteriores para poder utilizar la enumeración teniamos que obtener el código que nos interesaba.&lt;/p&gt;

&lt;p&gt;En esta nueva versión podremos realizar la siguiente consulta:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; var query = context.Products.Where(a=&amp;gt; a.Category == Category.Games);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Saludos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203941" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/AQ7dR3LmWFo" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/EF/default.aspx">EF</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/c_2300_4.5/default.aspx">c#4.5</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/EF5/default.aspx">EF5</category></item><item><title>[TIP] Exportar Word a PDF desde Código</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/03/16/tip-exportar-word-a-pdf-desde-c-243-digo.aspx</link><pubDate>Fri, 16 Mar 2012 10:25:09 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:203864</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=203864</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/03/16/tip-exportar-word-a-pdf-desde-c-243-digo.aspx#comments</comments><description>&lt;p&gt;Mini artículo para exportar un fichero word a PDF desde código c# y VB.NET.&lt;/p&gt;  &lt;h4&gt;Al Lio&lt;/h4&gt;  &lt;p&gt;Para poder trabajar con documentos de Word en nuestro código es necesario que agreguemos la referencia “Microsoft.Office.Interop.Word.dll”.&lt;/p&gt;  &lt;p&gt;Sin mas dilación el código:&lt;/p&gt;  &lt;p&gt;VB.NET&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; Dim app As New Microsoft.Office.Interop.Word.Application()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;         Dim missing As Object = System.Type.Missing&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;         Try&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;                 Dim document As Microsoft.Office.Interop.Word.Document = app.Documents.Open(RutaCarta)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;                 Dim nombre As String = String.Format(&lt;span style="color:#006080;"&gt;&amp;quot;{0}\TEMP\Name.doc&amp;quot;&lt;/span&gt;, Application.StartupPath)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;                 app.Visible = False&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;                 &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;                 app.ActiveDocument.ExportAsFixedFormat(String.Format(&lt;span style="color:#006080;"&gt;&amp;quot;{0}\Name.pdf&amp;quot;&lt;/span&gt;, Application.StartupPath), &amp;amp; _&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;                      Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF, False, &amp;amp; _&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;                         Microsoft.Office.Interop.Word.WdExportOptimizeFor.wdExportOptimizeForPrint, &amp;amp; _&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;                     Microsoft.Office.Interop.Word.WdExportRange.wdExportAllDocument)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;                 document.Close()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;    &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;         Catch ex As Exception&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt; &amp;#39;Manejar la excepción....&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;         Finally&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;             app.Quit()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;         End Try&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;C#&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; var app = New Microsoft.Office.Interop.Word.Application()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; var missing = System.Type.Missing&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     var document = app.Documents.Open(RutaCarta);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; nombre = String.Format(&lt;span style="color:#006080;"&gt;&amp;quot;{0}\TEMP\Name.doc&amp;quot;&lt;/span&gt;, Application.StartupPath);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;     app.Visible = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;                 &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;        app.ActiveDocument.ExportAsFixedFormat(String.Format(&lt;span style="color:#006080;"&gt;&amp;quot;{0}\Name.pdf&amp;quot;&lt;/span&gt;, Application.StartupPath), &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;                      Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF, False, &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;                         Microsoft.Office.Interop.Word.WdExportOptimizeFor.wdExportOptimizeForPrint, &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;                     Microsoft.Office.Interop.Word.WdExportRange.wdExportAllDocument);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;                 document.Close();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt;(Exception ex)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt; &amp;#39;Manejar la excepción....&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;  }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;finally&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;     app.Quit();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Gracias al método ExportAsFixedFormat, podremos exportar nuestro fichero Word a formato PDF o XPS…&lt;/p&gt;

&lt;p&gt;…PERO!!!:&lt;/p&gt;

&lt;p&gt;Podremos encontrarnos una excepción que nos dirá algo así: “Esta funcionalidad no está instalada.”.&lt;/p&gt;

&lt;p&gt;Para poder ejecutar de forma correcta este código, necesitamos instalar un &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=7"&gt;addin&lt;/a&gt; de Office.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Espero que os sea de utilidad.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Saludos!!!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203864" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/T5zZaZTlumU" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VB/default.aspx">VB</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VS/default.aspx">VS</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/WinForms/default.aspx">WinForms</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/WPF/default.aspx">WPF</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Office/default.aspx">Office</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Word/default.aspx">Word</category></item><item><title>DbMigration y Code First</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/03/16/dbmigration-y-code-first.aspx</link><pubDate>Fri, 16 Mar 2012 08:54:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:203860</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=203860</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/03/16/dbmigration-y-code-first.aspx#comments</comments><description>&lt;h4&gt;Introducci&amp;oacute;n&lt;/h4&gt;
&lt;p&gt;Una de las novedades que se introdujo con la versi&amp;oacute;n 4.3 de Entity Framework son las llamadas Database Migration (DbMigration), que vienen a satisfacer las necesidades de los desarrolladores a la hora de realizar cambios en la estructura de la base de datos, como por ejemplo:&lt;/p&gt;
&lt;p&gt;- Creaci&amp;oacute;n o borrado de Tablas.&lt;/p&gt;
&lt;p&gt;- Cambiar o quitar columnas.&lt;/p&gt;
&lt;p&gt;- entre otras cosas :)&lt;/p&gt;
&lt;p&gt;La principal problem&amp;aacute;tica ven&amp;iacute;a a la hora de tener nuestra aplicaci&amp;oacute;n instalada en varios clientes y que tengan distintas versiones de Base de Datos.&lt;/p&gt;
&lt;h4&gt;Empezando&lt;/h4&gt;
&lt;p&gt;Para poder empezar a utilizar DbMigration es necesario que al &amp;ldquo;menos&amp;rdquo; tengamos instalada la versi&amp;oacute;n 4.3.1(*) de Entity Framework, si no podremos instalarla desde nuget o desde la consola de comandos:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; Install-Package EntityFramework &lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;(*) Se encuentra en fase beta la version&amp;nbsp; 5.0 de Entity Framework.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A continuaci&amp;oacute;n desde la consola de comandos, tendremos que especificar la habilitaci&amp;oacute;n de migraciones para nuestro proyecto, para ello ejecutaremos el comando &amp;ldquo;Enable-Migrations&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Esta acci&amp;oacute;n va a realizar los siguientes procesos:&lt;/p&gt;
&lt;p&gt;- Va a buscar una clase dentro de nuestro proyecto que implemente la clase DBContext, para utilizar dicho contexto a la hora de definir las migraciones.&lt;/p&gt;
&lt;p&gt;- Va a crear una nueva carpeta &amp;ldquo;Migrations&amp;rdquo; en nuestro proyecto. Esta carpeta va a contener los siguientes ficheros:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;&lt;ol&gt;
&lt;li&gt;Clase Configuration.cs: Esta clase va a ser una implementaci&amp;oacute;n de la clase base gen&amp;eacute;rica DbMigrationsConfiguration con nuestro objeto contexto. &lt;br /&gt;Dentro de ella, vamos a poder definir la configuraci&amp;oacute;n de la migraci&amp;oacute;n (en el constructor) y si hay que hacer algun proceso de llenado de informaci&amp;oacute;n (m&amp;eacute;todo Seed).&lt;/li&gt;
&lt;li&gt;Una Migraci&amp;oacute;n Inicial: va a definir una clase que implemente la clase Base DbMigration, donde tendremos el m&amp;eacute;todo Up con la creaci&amp;oacute;n de nuestras entidades, y el m&amp;eacute;todo Down con el borrado de las mismas. La implementaci&amp;oacute;n de las migraciones se realiza en dos partes, la primera es la que acabamos de ver, y la segunda es relativa a informaci&amp;oacute;n que se va a almacenar en la Base de Datos.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;- Va a crear una tabla dentro de nuestra Base de Datos&amp;nbsp; llamada __MigrationHistory que va a almacenar informaci&amp;oacute;n relativa a las migraciones.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&amp;iquest;C&amp;oacute;mo crear una Migraci&amp;oacute;n?&lt;/h4&gt;
&lt;p&gt;Bien para crear una nueva migraci&amp;oacute;n desde la consola de comandos ejecutaremos la siguiente instrucci&amp;oacute;n:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Add-Migration Name&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Al ejecutarlo, se va a generar una nueva clase dentro de la carpeta Migrations, con una estructura similar a la mencionada anteriormente con la migraci&amp;oacute;n inicial.&lt;/p&gt;
&lt;p&gt;Dentro de dicha clase vamos a tener que implementar los m&amp;eacute;todos Up, para subir de versi&amp;oacute;n, y Down para bajar de versi&amp;oacute;n.&lt;/p&gt;
&lt;h4&gt;&amp;iquest;Qu&amp;eacute; M&amp;eacute;todos podemos utilizar en los m&amp;eacute;todos Up y Down?&lt;/h4&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="400" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;AddColumn&lt;/td&gt;
&lt;td width="133" valign="top"&gt;AddForeignKey&lt;/td&gt;
&lt;td width="133" valign="top"&gt;AddPrimaryKey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;AlterColumn&lt;/td&gt;
&lt;td width="133" valign="top"&gt;CreateIndex&lt;/td&gt;
&lt;td width="133" valign="top"&gt;CreateTable&amp;lt;T&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;DropColumn&lt;/td&gt;
&lt;td width="133" valign="top"&gt;DropForeignKey&lt;/td&gt;
&lt;td width="133" valign="top"&gt;DropPrimaryKey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;DropIndex&lt;/td&gt;
&lt;td width="133" valign="top"&gt;DropTable&lt;/td&gt;
&lt;td width="133" valign="top"&gt;MoveTable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;RenameColumn&lt;/td&gt;
&lt;td width="133" valign="top"&gt;RenameTable&lt;/td&gt;
&lt;td width="133" valign="top"&gt;SQL&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;Ejemplo:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; ProductMigration : DbMigration&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt;     {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Up()&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;         {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;             CreateTable(&lt;span style="color:#006080;"&gt;&amp;quot;Products&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;                 columns =&amp;gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;                 {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;                     ProductId = columns.Int(identity: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;),&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;                     Name = columns.String(maxLength: 100),&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;                     Description = columns.String(),&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;                     Price = columns.Decimal(precision: 10, scale: 2)&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;                 });&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;         }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;         &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Down()&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum16" style="color:#606060;"&gt;  16:&lt;/span&gt;         {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum17" style="color:#606060;"&gt;  17:&lt;/span&gt;             DropTable(&lt;span style="color:#006080;"&gt;&amp;quot;Products&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum18" style="color:#606060;"&gt;  18:&lt;/span&gt;         }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum19" style="color:#606060;"&gt;  19:&lt;/span&gt;     }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;&amp;iquest;C&amp;oacute;mo actualizar la Base de Datos?&lt;/h4&gt;
&lt;p&gt;Para poder ejecutar una migraci&amp;oacute;n tenemos dos posibles formas:&lt;/p&gt;
&lt;p&gt;1) Desde la consola de Comandos:&lt;/p&gt;
&lt;p&gt;A trav&amp;eacute;s del comando &amp;ldquo;Update-Database&amp;rdquo;. Los par&amp;aacute;metros del comando son:&lt;/p&gt;
&lt;p&gt;- SourceMigration &amp;lt;String&amp;gt; &lt;br /&gt;- TargetMigration &amp;lt;String&amp;gt; &lt;br /&gt;- Script [&amp;lt;SwitchParameter&amp;gt;] &lt;br /&gt;- Force [&amp;lt;SwitchParameter&amp;gt;] &lt;br /&gt;- ProjectName &amp;lt;String&amp;gt; &lt;br /&gt;- StartUpProjectName &amp;lt;String&amp;gt; &lt;br /&gt;- ConfigurationTypeName &amp;lt;String&amp;gt; &lt;br /&gt;- ConnectionStringName &amp;lt;String&amp;gt; &lt;br /&gt;- ConnectionString &amp;lt;String&amp;gt; &lt;br /&gt;- ConnectionProviderName &amp;lt;String&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;2) Desde c&amp;oacute;digo: &lt;/p&gt;
&lt;p&gt;Definiremos un objeto del tipo Configuration, otro del tipo DbMigrator, y ejecutaremos el m&amp;eacute;todo Update:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; var config = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Migrations.Configuration();&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt;             var migrator = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DbMigrator(config);&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;             migrator.Update();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Esta acci&amp;oacute;n va a ejecutar la actualizaci&amp;oacute;n a la ultima versi&amp;oacute;n de la Base de Datos. En el caso de desear ejecutar una migraci&amp;oacute;n concreta o volver a una versi&amp;oacute;n determinada, ejecutar&amp;iacute;amos de la siguiente manera:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; var config = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Migrations.Configuration();&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; var migrator = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DbMigrator(config);&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt; migrator.Update(&lt;span style="color:#006080;"&gt;&amp;quot;201203140720163_InitialCreate&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Espero que os resulte de utilidad.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Saludos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203860" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/wrCeBfFbBDQ" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/SQL/default.aspx">SQL</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VS/default.aspx">VS</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/EF/default.aspx">EF</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/WinForms/default.aspx">WinForms</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/WPF/default.aspx">WPF</category></item><item><title>WebCast Entity Framework</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/03/06/webcast-entity-framework.aspx</link><pubDate>Tue, 06 Mar 2012 14:19:29 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:203713</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=203713</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/03/06/webcast-entity-framework.aspx#comments</comments><description>&lt;p&gt;Buenos Tardes,&lt;/p&gt;  &lt;p&gt;El viernes pasado iba a realizar un evento online acerca de Entity Framework, por motivos ajenos a GuseNET no pudimos realizar dicho evento de forma online.&lt;/p&gt;  &lt;p&gt;Lo primero a todos los que estabais interesados en verlo, Lo siento!!&lt;/p&gt;  &lt;p&gt;Voy a realizarlo como tenia previsto este Viernes 09 de Marzo a las 16:30 hora de Madrid.&lt;/p&gt;  &lt;p&gt;El enlace de registro:&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032508198&amp;amp;Culture=es-ES"&gt;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032508198&amp;amp;Culture=es-ES&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Un saludo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203713" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/AyJ3qZ26u7s" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/EF/default.aspx">EF</category></item><item><title>[GuseNET] WebCast Entity Framework</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/02/24/gusenet-webcast-entity-framework.aspx</link><pubDate>Fri, 24 Feb 2012 11:29:57 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:203520</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=203520</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/02/24/gusenet-webcast-entity-framework.aspx#comments</comments><description>&lt;p&gt;Buenos días,&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hace un tiempo publique un &lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/02/17/gusenet-evento-sobre-entity-framework-mesa-redonda.aspx"&gt;Evento presencial&lt;/a&gt; en el que voy a hablar acerca de Entity Framework para el grupo de usuarios GUSNET.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;En vista de que varías personas han preguntado si lo ibamos a grabar o si lo ibamos a emitir de alguna manera online, y gracias a la gente de MS, tenemos la posibilidad de emitirlo vía Live Meeting.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;La URL de registro del evento: &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032507409&amp;amp;Culture=es-ES"&gt;aquí&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Un saludo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203520" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/Vwvwy42dYB4" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/EF/default.aspx">EF</category></item><item><title>[UOC] Materiales WebCast Async y Await</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/02/24/uoc-materiales-webcast-async-y-await.aspx</link><pubDate>Fri, 24 Feb 2012 08:02:37 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:203516</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=203516</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/02/24/uoc-materiales-webcast-async-y-await.aspx#comments</comments><description>&lt;p&gt;Buenos días,&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Desde este post lo primero que quiero hacer es daros las gracias por asistir a la charla sobre Async y Await que tuve el placer de impartir ayer.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Os dejo los materiales para que los descarguéis y podáis hacer vuestras pruebas.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;- &lt;a href="https://skydrive.live.com/redir.aspx?cid=3f59c33a50c6d482&amp;amp;resid=3F59C33A50C6D482!375&amp;amp;parid=3F59C33A50C6D482!374"&gt;Presentación&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;- &lt;a href="https://skydrive.live.com/redir.aspx?cid=3f59c33a50c6d482&amp;amp;resid=3F59C33A50C6D482!376&amp;amp;parid=3F59C33A50C6D482!374"&gt;Demos&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;En breve también podréis acceder a la grabación de la misma para aquellos que no pudisteis asistir.&lt;/p&gt;  &lt;p&gt;Si tenéis cualquier cosa, no dudéis en enviarme un correo o Tweet.&lt;/p&gt;  &lt;p&gt;Un saludo.&lt;/p&gt;  &lt;p&gt;PD: Las demos están realizadas con VS11, pero para aquellos que queráis probarlo en VS2010 solo tendréis que descargar Async CTP V3 para VS y podréis probarlo.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203516" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/l8EctdC3Zbw" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Async/default.aspx">Async</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VS11/default.aspx">VS11</category></item><item><title>[GuseNET] Evento Sobre Entity Framework + Mesa Redonda</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/02/17/gusenet-evento-sobre-entity-framework-mesa-redonda.aspx</link><pubDate>Fri, 17 Feb 2012 09:32:20 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:203433</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=203433</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/02/17/gusenet-evento-sobre-entity-framework-mesa-redonda.aspx#comments</comments><description>&lt;p&gt;Hoy os quiero anunciar una charla que voy a impartir para el Grupo de Usuarios GUSENET.&lt;/p&gt;  &lt;p&gt;La Agenda del Evento es:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;16:30 – 19:00:&lt;/strong&gt;&amp;#160; USO Y VENTAJAS DE ENTITY FRAMEWORK 4: ASÍ COMO TRUCOS PARA ENFRENTARSE A CUESTIONES HABITUALES DEL USO DIARIO    &lt;br /&gt;&lt;strong&gt;19:00 – 20:00:&lt;/strong&gt;&amp;#160; Mesa redonda para debatir reuniones futuras del grupo.&lt;/p&gt;  &lt;p&gt;¿Dónde?&lt;/p&gt;  &lt;p&gt;Universidad de Murcia, Facultad de Informática&lt;/p&gt;  &lt;p&gt;Aula 1.01&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;El enlace de registro: &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032506760&amp;amp;Culture=es-ES"&gt;Aquí&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Saludos&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203433" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/C5fxkJIvCdI" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/EF/default.aspx">EF</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Charla/default.aspx">Charla</category></item><item><title>#ORAPOCO: V2.1</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/02/15/orapoco-v2-1.aspx</link><pubDate>Wed, 15 Feb 2012 09:28:13 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:203371</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=203371</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/02/15/orapoco-v2-1.aspx#comments</comments><description>&lt;p&gt;Continuando con mi particular cruzada de crear un Mini ORM para trabajar con ORACLE, publico una nueva versión de ORAPOCO.&lt;/p&gt;  &lt;h4&gt;Historia:&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/02/01/orapoco-v2-0.aspx"&gt;OraPoco V2.0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/01/30/orapoco-update-2.aspx"&gt;OraPoco Update 2&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/01/23/orapoco-primera-actualizaci-243-n.aspx"&gt;OraPoco Primer Update&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/01/18/orm-orapoco-trabajando-contra-oracle.aspx"&gt;OraPoco 1.0&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;¿Qué incluye esta nueva versión?&lt;/h4&gt;  &lt;p&gt;- Corrección de un pequeño bug.&lt;/p&gt;  &lt;p&gt;- Mejora en el rendimiento de la obtención de resultados de la base de Datos.&lt;/p&gt;  &lt;p&gt;- BulkInsert: Permite la inserción de datos a través de OracleBulkInsert. Es bastante más rápido que ejecutar las inserciones por separados, pero no tan rápido que utilizar BulkInsert directamente puesto que es necesario hacer una serie de conversiones.&lt;/p&gt;  &lt;p&gt;Ejemplo:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; Enumerable.Range(1, 300000).AsParallel().ForAll(a =&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     datos.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; BL_BLOQUEO_PANTALLA&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         BLPA_FECHA = DateTime.Now.ToShortDateString(),&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;         BLPA_HORA = DateTime.Now.ToShortTimeString(),&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         BLPA_PANTALLA = &lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;         BLPA_USUARIO = &lt;span style="color:#006080;"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;         BLPA_ID = a&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     });&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt; });&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt; db.BulkInsert&amp;lt;BL_BLOQUEO_PANTALLA&amp;gt;(datos);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h4&gt; ¿Qué es lo que vendrá?&lt;/h4&gt;

&lt;p&gt;Proyecto de Testing, Mejoras y más equivalencia de tipos de Oracle, Procedimientos Almacenados…&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Como siempre os pido un poquito de feedback si lo probáis.&lt;/p&gt;

&lt;p&gt;Enlaces de Descarga:&lt;/p&gt;

&lt;p&gt;- &lt;a href="https://github.com/Jtorrecilla/POCO.ORA.TP"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;- &lt;a href="https://nuget.org/packages/ORAPOCO/2.1"&gt;Nuget&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Saludos!!!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203371" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/XQyxCg_5cYA" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/PERSONAL/default.aspx">PERSONAL</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VS/default.aspx">VS</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Oracle/default.aspx">Oracle</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/WinForms/default.aspx">WinForms</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/T4/default.aspx">T4</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/WPF/default.aspx">WPF</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/ORM/default.aspx">ORM</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/ORAPOCO/default.aspx">ORAPOCO</category></item><item><title>[UOC] WebCast sobre Async y Await</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/02/08/uoc-webcast-sobre-async-y-await.aspx</link><pubDate>Wed, 08 Feb 2012 10:44:33 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:203254</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=203254</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/02/08/uoc-webcast-sobre-async-y-await.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.idlebit.es"&gt;Alex Casquete&lt;/a&gt; me preguntó hace un tiempo si me apetecía dar una charlita sobre el nuevo paradigma de programación asíncrona, que se va a introducir con C# 5.0 y que ya podemos probar con VS 11 y la Async CTP 11, ASYNC y AWAIT.&lt;/p&gt;  &lt;p&gt;Mi respuesta fue que si :D&lt;/p&gt;  &lt;p&gt;Así que se queréis ver de que va todo esto el Jueves 23 de Febrero haré este WebCast en colaboración con &lt;a href="http://uoc.dotnetclubs.com/"&gt;UoC Dot Net Club&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Enlace al registro del evento. &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032505781&amp;amp;Culture=es-ES"&gt;Registro&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Saludos&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203254" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/cvdDmCNLjiY" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/WebCast/default.aspx">WebCast</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/UOC/default.aspx">UOC</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Async/default.aspx">Async</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Await/default.aspx">Await</category></item><item><title>ORAPOCO: V2.0</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/02/01/orapoco-v2-0.aspx</link><pubDate>Wed, 01 Feb 2012 12:03:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:203106</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=203106</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/02/01/orapoco-v2-0.aspx#comments</comments><description>&lt;h4&gt;Introducci&amp;oacute;n&lt;/h4&gt;
&lt;p&gt;
&lt;p&gt;Bueno, como habr&amp;eacute;is podido notar ando creando un ORM &amp;ldquo;ligero&amp;rdquo; para trabajar contra Oracle (Serie &lt;a href="http://geeks.ms/blogs/tags/jtorrecilla/ORAPOCO/default.aspx"&gt;ORAPOCO&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Bien, en la segunda &lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/01/30/orapoco-update-2.aspx"&gt;actualizaci&amp;oacute;n&lt;/a&gt;, tanto &lt;a href="https://twitter.com/#!/eiximenis"&gt;@Eiximenis&lt;/a&gt; como @Juanma, me indicaban algo que las clases POCO no deb&amp;iacute;a implementar ninguna clase Base, algo que a mi tampoco me convenc&amp;iacute;a haberlo agregado.&lt;/p&gt;
&lt;p&gt;Adem&amp;aacute;s de ello Eduard comentaba la posibilidad de hacer configuraci&amp;oacute;n de los Mapeos, para evitar hacer uso de Atributos en las clases POCO y que est&amp;aacute;n sean completamente POCO. El tema de los mapeos es parecido a lo que se ve en &lt;a href="http://wiki.fluentnhibernate.org/Getting_started"&gt;FluentNhibernate&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Por otro lado &lt;a href="https://twitter.com/#!/_PedroHurtado"&gt;@_PedroHurtado&lt;/a&gt;, me comentaba que era posible hacer Sql Injection, y me propuso que modificara los par&amp;aacute;metros String por &lt;a href="http://msdn.microsoft.com/en-us/library/bb397951.aspx"&gt;Expression&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bueno por estos motivos nace est&amp;aacute; nueva versi&amp;oacute;n de ORAPOCO.&lt;/p&gt;
&lt;/p&gt;
&lt;h4&gt;Cambios&lt;/h4&gt;
&lt;h5&gt;&lt;span style="text-decoration:underline;"&gt;Modificaci&amp;oacute;n de la Plantilla T4&lt;/span&gt;&lt;/h5&gt;
&lt;p&gt;He modificado la plantilla T4, de tal forma que va a generar objetos POCO, sin ning&amp;uacute;n tipo de atributo:&lt;/p&gt;
&lt;p&gt;Objeto POCO:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;span id="lnum1" style="color:#606060;"&gt;1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; BL_BLOQUEO_PANTALLA
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum2" style="color:#606060;"&gt;2:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum3" style="color:#606060;"&gt;3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; System.Int32 BLPA_ID {get;set;}
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum4" style="color:#606060;"&gt;4:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; System.String BLPA_PANTALLA {get;set;}
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum5" style="color:#606060;"&gt;5:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; System.String BLPA_FECHA {get;set;}
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum6" style="color:#606060;"&gt;6:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; System.String BLPA_HORA {get;set;}
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum7" style="color:#606060;"&gt;7:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; System.String BLPA_USUARIO {get;set;}
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum8" style="color:#606060;"&gt;8:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Del mismo modo se van a generar unas nuevas clases, que ser&amp;aacute;n los Mapeadores por defecto:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;span id="lnum1" style="color:#606060;"&gt;1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; BL_BLOQUEO_PANTALLAMapper : GenericMapper&amp;lt;BL_BLOQUEO_PANTALLA&amp;gt;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum2" style="color:#606060;"&gt;2:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum3" style="color:#606060;"&gt;3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Type GetMappedType()
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum4" style="color:#606060;"&gt;4:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum5" style="color:#606060;"&gt;5:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(BL_BLOQUEO_PANTALLA);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum6" style="color:#606060;"&gt;6:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum7" style="color:#606060;"&gt;7:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; BL_BLOQUEO_PANTALLAMapper() : &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;()
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum8" style="color:#606060;"&gt;8:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum9" style="color:#606060;"&gt;9:&lt;/span&gt; AddColumnMapping(x=&amp;gt; x.BLPA_ID);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum10" style="color:#606060;"&gt;10:&lt;/span&gt; SetPrimaryKeyField(x =&amp;gt; x.BLPA_ID);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum11" style="color:#606060;"&gt;11:&lt;/span&gt; AddColumnMapping(x=&amp;gt; x.BLPA_PANTALLA);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum12" style="color:#606060;"&gt;12:&lt;/span&gt; SetNullable(x=&amp;gt; x.BLPA_PANTALLA);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum13" style="color:#606060;"&gt;13:&lt;/span&gt; AddColumnMapping(x=&amp;gt; x.BLPA_FECHA);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum14" style="color:#606060;"&gt;14:&lt;/span&gt; SetNullable(x=&amp;gt; x.BLPA_FECHA);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum15" style="color:#606060;"&gt;15:&lt;/span&gt; AddColumnMapping(x=&amp;gt; x.BLPA_HORA);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum16" style="color:#606060;"&gt;16:&lt;/span&gt; SetNullable(x=&amp;gt; x.BLPA_HORA);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum17" style="color:#606060;"&gt;17:&lt;/span&gt; AddColumnMapping(x=&amp;gt; x.BLPA_USUARIO);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum18" style="color:#606060;"&gt;18:&lt;/span&gt; SetNullable(x=&amp;gt; x.BLPA_USUARIO);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum19" style="color:#606060;"&gt;19:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum20" style="color:#606060;"&gt;20:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h5&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Creaci&amp;oacute;n de los Objetos OracleColumnInfo,Mapper, IGenericMapper&amp;lt;T&amp;gt; y GenericMapper&amp;lt;T&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;Para facilitar el mapeo de datos, he creado las siguientes clases e interfaz:&lt;/p&gt;
&lt;p&gt;Clase OraceColumnInfo para representar la informaci&amp;oacute;n relativa a cada columna de los objetos POCO.&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;span id="lnum1" style="color:#606060;"&gt;1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; OracleColumnInfo
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum2" style="color:#606060;"&gt;2:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum3" style="color:#606060;"&gt;3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; OracleColumnInfo()
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum4" style="color:#606060;"&gt;4:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum5" style="color:#606060;"&gt;5:&lt;/span&gt; IsPk = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum6" style="color:#606060;"&gt;6:&lt;/span&gt; Nullable = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum7" style="color:#606060;"&gt;7:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum8" style="color:#606060;"&gt;8:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; IsPk { get; set; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum9" style="color:#606060;"&gt;9:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; ColumnName { get; set; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum10" style="color:#606060;"&gt;10:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; Nullable { get; set; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum11" style="color:#606060;"&gt;11:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; DefaultValue { get; set; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum12" style="color:#606060;"&gt;12:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; SequenceName { get; set; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum13" style="color:#606060;"&gt;13:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;La Interfaz IGenericMapper&amp;lt;T&amp;gt;:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;span id="lnum1" style="color:#606060;"&gt;1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;interface&lt;/span&gt; IGenericMapper&amp;lt;T&amp;gt;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum2" style="color:#606060;"&gt;2:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum3" style="color:#606060;"&gt;3:&lt;/span&gt; IGenericMapper&amp;lt;T&amp;gt; SetPrimaryKeyField(Expression&amp;lt;Func&amp;lt;T, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;&amp;gt; property);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum4" style="color:#606060;"&gt;4:&lt;/span&gt; IGenericMapper&amp;lt;T&amp;gt; AddColumnMapping(Expression&amp;lt;Func&amp;lt;T, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;&amp;gt; property);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum5" style="color:#606060;"&gt;5:&lt;/span&gt; IGenericMapper&amp;lt;T&amp;gt; SetNullable(Expression&amp;lt;Func&amp;lt;T, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;&amp;gt; property);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum6" style="color:#606060;"&gt;6:&lt;/span&gt; IGenericMapper&amp;lt;T&amp;gt; SetDefaultValue(Expression&amp;lt;Func&amp;lt;T, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;&amp;gt; property, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; DefaultValue);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum7" style="color:#606060;"&gt;7:&lt;/span&gt; IGenericMapper&amp;lt;T&amp;gt; SetSequence(Expression&amp;lt;Func&amp;lt;T, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;&amp;gt; property, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; SequenceName);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum8" style="color:#606060;"&gt;8:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;La clase Mapper: Va a servir para representar el conjunto de columnas de un objeto POCO.&lt;/p&gt;
&lt;p&gt;La clase: GenericMapper&amp;lt;T&amp;gt;, va a extender a Mapper e implementar a IGenericMapper:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;span id="lnum1" style="color:#606060;"&gt;1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; GenericMapper&amp;lt;T&amp;gt; : Mapper,IGenericMapper&amp;lt;T&amp;gt;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum2" style="color:#606060;"&gt;2:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum3" style="color:#606060;"&gt;3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; GenericMapper()
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum4" style="color:#606060;"&gt;4:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum5" style="color:#606060;"&gt;5:&lt;/span&gt; Columns = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; List&amp;lt;OracleColumnInfo&amp;gt;();
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum6" style="color:#606060;"&gt;6:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum7" style="color:#606060;"&gt;7:&lt;/span&gt;&amp;nbsp;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum8" style="color:#606060;"&gt;8:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IGenericMapper&amp;lt;T&amp;gt; AddColumnMapping(Expression&amp;lt;Func&amp;lt;T, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;&amp;gt; property)
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum9" style="color:#606060;"&gt;9:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum10" style="color:#606060;"&gt;10:&lt;/span&gt; PropertyInfo propertyInfo = GetProperty(property);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum11" style="color:#606060;"&gt;11:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum12" style="color:#606060;"&gt;12:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum13" style="color:#606060;"&gt;13:&lt;/span&gt;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum14" style="color:#606060;"&gt;14:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IGenericMapper&amp;lt;T&amp;gt; SetPrimaryKeyField(Expression&amp;lt;Func&amp;lt;T, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;&amp;gt; property)
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum15" style="color:#606060;"&gt;15:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum16" style="color:#606060;"&gt;16:&lt;/span&gt; PropertyInfo propertyInfo = GetProperty(property);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum17" style="color:#606060;"&gt;17:&lt;/span&gt; AddColumn(propertyInfo);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum18" style="color:#606060;"&gt;18:&lt;/span&gt; Columns.Where(col =&amp;gt; col.ColumnName.Equals(propertyInfo.Name)).FirstOrDefault().IsPk = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum19" style="color:#606060;"&gt;19:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum20" style="color:#606060;"&gt;20:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum21" style="color:#606060;"&gt;21:&lt;/span&gt;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum22" style="color:#606060;"&gt;22:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IGenericMapper&amp;lt;T&amp;gt; SetNullable(Expression&amp;lt;Func&amp;lt;T, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;&amp;gt; property)
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum23" style="color:#606060;"&gt;23:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum24" style="color:#606060;"&gt;24:&lt;/span&gt; PropertyInfo propertyInfo = GetProperty(property);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum25" style="color:#606060;"&gt;25:&lt;/span&gt; AddColumn(propertyInfo);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum26" style="color:#606060;"&gt;26:&lt;/span&gt; Columns.Where(col =&amp;gt; col.ColumnName.Equals(propertyInfo.Name)).FirstOrDefault().Nullable = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum27" style="color:#606060;"&gt;27:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum28" style="color:#606060;"&gt;28:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum29" style="color:#606060;"&gt;29:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IGenericMapper&amp;lt;T&amp;gt; SetDefaultValue(Expression&amp;lt;Func&amp;lt;T, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;&amp;gt; property, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; DefaultValue)
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum30" style="color:#606060;"&gt;30:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum31" style="color:#606060;"&gt;31:&lt;/span&gt; PropertyInfo propertyInfo = GetProperty(property);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum32" style="color:#606060;"&gt;32:&lt;/span&gt; AddColumn(propertyInfo);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum33" style="color:#606060;"&gt;33:&lt;/span&gt; Columns.Where(col =&amp;gt; col.ColumnName.Equals(propertyInfo.Name)).FirstOrDefault().DefaultValue = DefaultValue;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum34" style="color:#606060;"&gt;34:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum35" style="color:#606060;"&gt;35:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum36" style="color:#606060;"&gt;36:&lt;/span&gt;&amp;nbsp;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum37" style="color:#606060;"&gt;37:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; AddColumn(PropertyInfo propertyInfo)
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum38" style="color:#606060;"&gt;38:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum39" style="color:#606060;"&gt;39:&lt;/span&gt; var column = Columns.Where(col =&amp;gt; col.ColumnName.Equals(propertyInfo.Name)).FirstOrDefault();
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum40" style="color:#606060;"&gt;40:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (column == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum41" style="color:#606060;"&gt;41:&lt;/span&gt; Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; OracleColumnInfo { ColumnName = propertyInfo.Name });
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum42" style="color:#606060;"&gt;42:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum43" style="color:#606060;"&gt;43:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; PropertyInfo GetProperty(Expression&amp;lt;Func&amp;lt;T, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;&amp;gt; property)
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum44" style="color:#606060;"&gt;44:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum45" style="color:#606060;"&gt;45:&lt;/span&gt; PropertyInfo propertyInfo = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum46" style="color:#606060;"&gt;46:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (property.Body &lt;span style="color:#0000ff;"&gt;is&lt;/span&gt; MemberExpression)
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum47" style="color:#606060;"&gt;47:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum48" style="color:#606060;"&gt;48:&lt;/span&gt; propertyInfo = (property.Body &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; MemberExpression).Member &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; PropertyInfo;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum49" style="color:#606060;"&gt;49:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum50" style="color:#606060;"&gt;50:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum51" style="color:#606060;"&gt;51:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum52" style="color:#606060;"&gt;52:&lt;/span&gt; propertyInfo = (((UnaryExpression)property.Body).Operand &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; MemberExpression).Member &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; PropertyInfo;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum53" style="color:#606060;"&gt;53:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum54" style="color:#606060;"&gt;54:&lt;/span&gt;&amp;nbsp;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum55" style="color:#606060;"&gt;55:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; propertyInfo;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum56" style="color:#606060;"&gt;56:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum57" style="color:#606060;"&gt;57:&lt;/span&gt;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum58" style="color:#606060;"&gt;58:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IGenericMapper&amp;lt;T&amp;gt; SetSequence(Expression&amp;lt;Func&amp;lt;T, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;&amp;gt; property, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; SequenceName)
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum59" style="color:#606060;"&gt;59:&lt;/span&gt; {
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum60" style="color:#606060;"&gt;60:&lt;/span&gt; PropertyInfo propertyInfo = GetProperty(property);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum61" style="color:#606060;"&gt;61:&lt;/span&gt; AddColumn(propertyInfo);
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum62" style="color:#606060;"&gt;62:&lt;/span&gt; Columns.Where(col =&amp;gt; col.ColumnName.Equals(propertyInfo.Name)).FirstOrDefault().SequenceName = SequenceName;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum63" style="color:#606060;"&gt;63:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum64" style="color:#606060;"&gt;64:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum65" style="color:#606060;"&gt;65:&lt;/span&gt;
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum66" style="color:#606060;"&gt;66:&lt;/span&gt; }
&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h5&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Creaci&amp;oacute;n de ConfigureMapping y AutoConfigureMapping&lt;/span&gt;&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;Ambos m&amp;eacute;todos van&amp;nbsp; a servir para configurar los Mapeos, y ser&amp;aacute;n invocados de forma Manual.&lt;/p&gt;
&lt;p&gt;AutoConfigureMapping, va a registrar todas aquellas clases que Implementen AutoConfigureMapping dentro del Assembly en el que nos encontremos.&lt;/p&gt;
&lt;h4&gt;C&amp;oacute;digo:&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Primer Ejemplo: Como crear y registrar un nuevo Mapeo:&lt;/strong&gt;&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;span id="lnum1" style="color:#606060;"&gt;1:&lt;/span&gt; db.ConfigureMapping&amp;lt;SAMPLE&amp;gt;(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; GenericMapper&amp;lt;SAMPLE&amp;gt;().
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum2" style="color:#606060;"&gt;2:&lt;/span&gt; SetPrimaryKeyField(x =&amp;gt; x.ID).
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum3" style="color:#606060;"&gt;3:&lt;/span&gt; AddColumnMapping(x =&amp;gt; x.NOMBRE).
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum4" style="color:#606060;"&gt;4:&lt;/span&gt; SetDefaultValue(x =&amp;gt; x.ID, &lt;span style="color:#006080;"&gt;&amp;quot;SysGuid()&amp;quot;&lt;/span&gt;));
&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;El Mapeo permite llevar a cabo:&lt;/p&gt;
&lt;p&gt;- Creaci&amp;oacute;n de columnas.&lt;/p&gt;
&lt;p&gt;- Establecer PK Simple o Compuesta.&lt;/p&gt;
&lt;p&gt;- Establecer Valor Por Defecto.&lt;/p&gt;
&lt;p&gt;- Establecer Nulos.&lt;/p&gt;
&lt;p&gt;- Establecer Secuencias.&lt;/p&gt;
&lt;p&gt;A la hora de realizar una inserci&amp;oacute;n, actualizaci&amp;oacute;n o borrado, se va a comprobar si existe un mapeo Configurado, en caso de no existir se intentar&amp;aacute; ejecutar como si tuviese Atributos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nuevas formas de Ejecutar Consultas:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Al haber sustituido string por Expression, se ejecutar&amp;aacute;n las consultas del siguiente modo:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;span id="lnum1" style="color:#606060;"&gt;1:&lt;/span&gt; var data = db.Query&amp;lt;EMPRESA&amp;gt;(columns:
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum2" style="color:#606060;"&gt;2:&lt;/span&gt; (x) =&amp;gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; { x.EMPR_NOMBRE_CORTO, x.EMPR_NOMBRE_EMPRESA },
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum3" style="color:#606060;"&gt;3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt;:
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum4" style="color:#606060;"&gt;4:&lt;/span&gt; (x =&amp;gt; ( x.EMPR_NOMBRE_EMPRESA.Contains(&lt;span style="color:#006080;"&gt;&amp;quot;D&amp;quot;&lt;/span&gt;) ||
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum5" style="color:#606060;"&gt;5:&lt;/span&gt; x.EMPR_CODIGO_EMPRESA != 101 ||
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum6" style="color:#606060;"&gt;6:&lt;/span&gt; x.EMPR_A&amp;Ntilde;O &amp;gt;= 2008 ) &amp;amp;&amp;amp; (
&lt;pre&gt;&lt;/pre&gt;

&lt;span id="lnum7" style="color:#606060;"&gt;7:&lt;/span&gt; x.EMPR_MES == 1 )));
&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Los valores esperados para los par&amp;aacute;metros &amp;ldquo;Columns&amp;rdquo;, &amp;ldquo;Where&amp;rdquo; y &amp;ldquo;Order&amp;rdquo;, van a ser expresiones lambda.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Finally&lt;/h4&gt;
&lt;p&gt;Bien como siempre ten&amp;eacute;is las descargas en:&lt;/p&gt;
&lt;p&gt;- &lt;a href="https://github.com/Jtorrecilla/POCO.ORA.TP"&gt;GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="https://nuget.org/packages/ORAPOCO/2.0"&gt;Nuget&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Y como siempre cualquier feedback ser&amp;aacute; bien recibido.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203106" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/R-t35t_fJ_M" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VS/default.aspx">VS</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Oracle/default.aspx">Oracle</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/ORM/default.aspx">ORM</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/ORAPOCO/default.aspx">ORAPOCO</category></item><item><title>ORAPOCO: Update 2</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/01/30/orapoco-update-2.aspx</link><pubDate>Mon, 30 Jan 2012 10:03:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:203051</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=203051</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/01/30/orapoco-update-2.aspx#comments</comments><description>&lt;h4&gt;Introducci&amp;oacute;n&lt;/h4&gt;
&lt;p&gt;Hace unos d&amp;iacute;as publique &lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/01/18/orm-orapoco-trabajando-contra-oracle.aspx"&gt;ORAPOCO&lt;/a&gt;, un ORM ligero para trabajar con Bases de Datos Oracle, y su primera &lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/01/23/orapoco-primera-actualizaci-243-n.aspx"&gt;actualizaci&amp;oacute;n&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Cambios y Mejoras&lt;/h4&gt;
&lt;p&gt;- He realizado un poco de refactoring en el c&amp;oacute;digo.&lt;/p&gt;
&lt;p&gt;- He creado una clase abstracta &amp;ldquo;Base&amp;rdquo; que va a servir como Base de nuestras Entidades.&lt;/p&gt;
&lt;p&gt;- He a&amp;ntilde;adido una propiedad para indicar el modo de ejecuci&amp;oacute;n de los comandos: Normal(Valor por defecto) o &lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2011/08/17/patr-243-n-uow-parte-2.aspx"&gt;UnitOfWork&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;- He modificado la plantilla, para dar la posibilidad de utilizar el atributo &amp;ldquo;DefaultValue&amp;rdquo; con los valores por defecto de la Base de Datos.&lt;/p&gt;
&lt;h4&gt;Ejemplos:&lt;/h4&gt;
&lt;p&gt;Las nuevas entidades generadas por la plantilla tendr&amp;aacute;n un aspecto similar a:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; SAMPLE : Base&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;    {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;        [IsPK()]&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;        [DefaultValue(&lt;span style="color:#006080;"&gt;&amp;quot;SYS_GUID()&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; System.Guid ID { get; set; }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; System.String NOMBRE { get; set; }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Un ejemplo de utilizaci&amp;oacute;n de UoW:&lt;/p&gt;
&lt;div style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; var db = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; POCO.Ora.TP.OracleDB(&lt;span style="color:#006080;"&gt;&amp;quot;MyDB&amp;quot;&lt;/span&gt;,POCO.Ora.TP.Enums.Mode.UnitOfWork);&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; var sample = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; POCO.Ora.TP.SAMPLE { NOMBRE = &lt;span style="color:#006080;"&gt;&amp;quot;Javier&amp;quot;&lt;/span&gt; };&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; db.Insert&amp;lt;POCO.Ora.TP.SAMPLE&amp;gt;(sample);&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; db.Insert&amp;lt;POCO.Ora.TP.SAMPLE&amp;gt;(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; POCO.Ora.TP.SAMPLE { NOMBRE = &lt;span style="color:#006080;"&gt;&amp;quot;Alvaro&amp;quot;&lt;/span&gt; });&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt; db.Save();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Descargas:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Como siempre ten&amp;eacute;is las descargas en:&lt;/p&gt;
&lt;p&gt;- &lt;a href="https://github.com/Jtorrecilla/POCO.ORA.TP"&gt;GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="https://nuget.org/packages/ORAPOCO/1.0.4"&gt;Nuget&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Y proximamente en CodePlex.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Saludos, y como siempre si me dais FeedBack Genial!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203051" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/cTEZaYhWCR8" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VS/default.aspx">VS</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Oracle/default.aspx">Oracle</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/ORM/default.aspx">ORM</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/ORAPOCO/default.aspx">ORAPOCO</category></item><item><title>ORAPOCO: Primera actualización</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/01/23/orapoco-primera-actualizaci-243-n.aspx</link><pubDate>Mon, 23 Jan 2012 12:21:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:202936</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=202936</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/01/23/orapoco-primera-actualizaci-243-n.aspx#comments</comments><description>&lt;h4&gt;Introducci&amp;oacute;n&lt;/h4&gt;
&lt;p&gt;Hace unos d&amp;iacute;as publique &lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/01/18/orm-orapoco-trabajando-contra-oracle.aspx"&gt;ORAPOCO&lt;/a&gt;, y hoy lanzo una nueva versi&amp;oacute;n con algunas features y modificaciones.&lt;/p&gt;
&lt;h4&gt;Lo nuevo&lt;/h4&gt;
&lt;p&gt;Modificaciones:&lt;/p&gt;
&lt;p&gt;- Modificaci&amp;oacute;n en el atributo IsPK: Tal como comentaba &lt;a href="http://geeks.ms/blogs/etomas/"&gt;Eduard&lt;/a&gt; en el post anterior realmente no es necesario indicar True en dicho atributo puesto que solo lo van a tener los campos que formen la PK.&lt;/p&gt;
&lt;p&gt;- Refactorizaci&amp;oacute;n de los m&amp;eacute;todos de Inserci&amp;oacute;n, Actualizaci&amp;oacute;n y Borrado.&lt;/p&gt;
&lt;p&gt;Mejoras:&lt;/p&gt;
&lt;p&gt;- Creaci&amp;oacute;n del atributo Sequence:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; SequenceAttribute : System.Attribute &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; SequenceAttribute(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; sequenceName)&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.IsNullOrWhiteSpace(sequenceName)) &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Exception(&lt;span style="color:#006080;"&gt;&amp;quot;Sequence name is necessary.&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;         SequenceName = sequenceName;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;     }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; SequenceName { get; set; }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Este atributo, que se agregar&amp;aacute; de forma manual a nuestras entidades nos va a permitir simular el uso de auto num&amp;eacute;ricos en Oracle a trav&amp;eacute;s de una Secuencia.&lt;/p&gt;
&lt;p&gt;Ejemplo de uso:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; TM_EMPRESAS&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     [IsPK()]&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;     [Sequence(&lt;span style="color:#006080;"&gt;&amp;quot;S_Empresas&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; System.Int16 EMPR_CODIGO_EMPRESA {get;set;}       &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; System.String EMPR_NOMBRE_EMPRESA {get;set;}       &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt; &lt;span style="color:#008000;"&gt;///...&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;De esta manera a la hora de ejecutar la sentencia utilizar&amp;aacute; el siguiente valor auto num&amp;eacute;rico de la secuencia indicada.&lt;/p&gt;
&lt;p&gt;Descargas:&lt;/p&gt;
&lt;p&gt;- &lt;a href="https://github.com/Jtorrecilla/POCO.ORA.TP"&gt;GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="https://nuget.org/packages/ORAPOCO/1.0.3"&gt;Nuget&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Saludos! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=202936" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/BuYrCihjthY" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VS/default.aspx">VS</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Oracle/default.aspx">Oracle</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/ORM/default.aspx">ORM</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/ORAPOCO/default.aspx">ORAPOCO</category></item><item><title>[ORM]ORAPOCO: Trabajando contra Oracle</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/01/18/orm-orapoco-trabajando-contra-oracle.aspx</link><pubDate>Wed, 18 Jan 2012 09:25:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:202865</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=202865</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/01/18/orm-orapoco-trabajando-contra-oracle.aspx#comments</comments><description>Introducci&amp;oacute;n El objeto de este post, es hablar de un peque&amp;ntilde;o proyecto que acabo de publicar: ORAPOCO. Pod&amp;eacute;is encontrarlo tanto en GITHUB como en Nuget . &amp;iquest;Qu&amp;eacute; es ORAPOCO? Es un peque&amp;ntilde;o proyecto que va a permitir trabajar con objetos POCO y contra nuestra Base de Datos Oracle. El proyecto consta de los siguientes ficheros: - OracleDB.cs: Esta clase va a ser la encargada de llevar a cabo todas las acciones contra la Base de Datos. Los m&amp;eacute;todos disponibles...(&lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/01/18/orm-orapoco-trabajando-contra-oracle.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=202865" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/6FsT_1BeZoU" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VS/default.aspx">VS</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Oracle/default.aspx">Oracle</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/ORM/default.aspx">ORM</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/ORAPOCO/default.aspx">ORAPOCO</category></item><item><title>Comparativa ORM-Lite, EF y ADO.NET</title><link>http://geeks.ms/blogs/jtorrecilla/archive/2012/01/12/comparativa-orm-lite-ef-y-ado-net.aspx</link><pubDate>Thu, 12 Jan 2012 11:06:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:202715</guid><dc:creator>Javier Torrecilla</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://geeks.ms/blogs/jtorrecilla/rsscomments.aspx?PostID=202715</wfw:commentRss><comments>http://geeks.ms/blogs/jtorrecilla/archive/2012/01/12/comparativa-orm-lite-ef-y-ado-net.aspx#comments</comments><description>Introducción A raíz de la serie de post que estoy escribiendo acerca de ORMS ligeros con ( Dapper , Massive y PetaPoco ), y a pesar de no haber podido meter en la comparativa a Massive (lo intentaré actualizar esta noche), he decidido hacer una pequeña comparativa que me ha parecido interesante. Comparativa Para realizar la comparativa he utilizado los siguientes fragmentos de código, para realizar la inserción de 500 Registros en la misma tabla: Entity Framework 1: private static void UsingEF_B...(&lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2012/01/12/comparativa-orm-lite-ef-y-ado-net.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=202715" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ElBlogDeJavierTorrecilla/~4/sa4WdNRPtrk" height="1" width="1"/&gt;</description><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/SQL/default.aspx">SQL</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/VS/default.aspx">VS</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/EF/default.aspx">EF</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/ORM/default.aspx">ORM</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Dapper/default.aspx">Dapper</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/Massive/default.aspx">Massive</category><category domain="http://geeks.ms/blogs/jtorrecilla/archive/tags/PetaPoco/default.aspx">PetaPoco</category></item></channel></rss>

