Entity Framework 4.3 http://blogs.ugidotnet.org/PietroLibroBlog/category/Entity Framework 4.3.aspx Entity Framework 4.3 it-IT Pietro Libro pietro.libro@libero.it Subtext Version 2.6.0.0 DomusDotNet: EF Code First Migrations (Parte 2) http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/05/02/domusdotnet-ef-code-first-migrations-parte-2.aspx <p>Seconda parte dell’articolo dedicato a Code First Migrations. Articolo completo su <a href="http://www.domusdotnet.org/articoli/ef-code-first-migrations-%28parte-2%29.aspx">DomusDotNet</a>.</p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/100985.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/05/02/domusdotnet-ef-code-first-migrations-parte-2.aspx Wed, 02 May 2012 09:31:00 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/05/02/domusdotnet-ef-code-first-migrations-parte-2.aspx#feedback http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/100985.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/100985.aspx DomusDotNet: EF Code First Migrations (Parte 1) http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/04/18/domusdotnet-ef-code-first-migrations-parte-1.aspx <p>Prima parte di un articolo dedicato a Code First Migrations. Articolo completo su <a href="http://www.domusdotnet.org/articoli/ef-code-first-migration-%28parte-1%29.aspx" target="_blank">DomusDotNet</a>.</p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/100958.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/04/18/domusdotnet-ef-code-first-migrations-parte-1.aspx Wed, 18 Apr 2012 07:53:00 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/04/18/domusdotnet-ef-code-first-migrations-parte-1.aspx#feedback http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/100958.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/100958.aspx EF Power Tools Beta 2: Prove su strada http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/04/11/ef-power-tools-beta-2-prove-su-strada.aspx <p>Ero troppo curioso di provare la nuova versione (beta) dei Tools per EF. Diciamo che la curiosità è stata parzialmente ripagata <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Sorriso" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/wlEmoticon-smile_2.png" /> dato che con la prima versione non riuscii  a fare granché essendo, almeno nella mia configurazione software, non molto stabile. Andiamo con ordine: dopo aver installato la nuova versione dei Tools, ho provato subito ad eseguire la funzione “Reverse Engineer Code First”  (disponibile come voce di menu contestuale selezionando un progetto C#).</p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_thumb.png" width="293" height="128" /></a></p> <p>Per l’esperimento ho scelto un database con diverse tabelle, relazioni e “gerarchie”. Dopo aver cliccato sulla voce precedente, VS ha iniziato a “macinare” generando una sfilza di classi, suddividendole opportunatamente in classi di <em>Mapping</em>, <em>Object Model</em> e <em>DbContext</em>:</p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_thumb_1.png" width="179" height="244" /></a></p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_thumb_2.png" width="244" height="205" /></a></p> <p>L’operazione è durata pochi secondi. Secondo il post del team di ADO.NET EF, VS avrebbe dovuto scaricare ed installare (se non già presente nel progetto) l’ultima versione di Entity Framework (nello specifico caso non è accaduto, ma con NuGet, anche questa operazione è durata poco <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Sorriso" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/wlEmoticon-smile_2.png" /> ). Scorrendo l’elenco delle classi generate noto come il processo di <em>reverse engineering </em>abbia creato delle classi anche per le tutte le viste presenti sul database. Proviamo ad analizzare “graficamente” il modello ad oggetti creato, selezionando nel <em>Solution Explorer </em>la classe derivata dal <em>DbContext</em> e poi la voce “View Entity Data Model (Read Only)”:</p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_8.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_thumb_3.png" width="244" height="154" /></a></p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_12.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_thumb_5.png" width="244" height="209" /></a></p> <p>Molte delle classi “isolate” sono proprio le classi\viste generate dal VS. Con le altre opzioni disponibili possiamo, creare il DDL SQL:</p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_14.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_thumb_6.png" width="244" height="130" /></a></p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_16.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_thumb_7.png" width="244" height="241" /></a></p> <p>e visualizzare <em>l’Entity Data Model XML</em>:</p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_18.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_thumb_8.png" width="244" height="142" /></a></p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_20.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_thumb_9.png" width="244" height="131" /></a></p> <p>Se siamo curiosi, possiamo creare un nuovo database a partire dalle classi generate da VS e poi eseguire uno <em>Schema Compare</em> per visionare le differenze tra l’originale ed il generato:</p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_22.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/image_thumb_10.png" width="244" height="79" /></a></p> <p> </p><p>A colpo d’occhio mancano, rispetto all’originale, Stored Procedure e Viste, poi analizzando nel dettaglio le varie tabelle possiamo trovare alcune differenze come VARCHAR in NVARCHAR, valori di default mancanti, campi TEXT trasformati in NVARCHAR(MAX). Riassumendo, i Tools sembrano essere abbastanza stabili (rispetto alla versione precedente nessun crash <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Sorriso" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/c2771568168c_12AC0/wlEmoticon-smile_2.png" />) , quello che è certo (almeno fino ad ora) che dovendo partire da un database esistente, sviluppare le classi POCO e <em>DbContext</em> con questa rapidità non ha prezzo, ma sicuramente è necessario un ulteriore lavoro di “fino” (magari in combinazione con EF Code First Migrations) se l’obiettivo è quello di avere un modello finale “fedele” all’originale, in caso contrario è un ottima base di partenza per un <em>refactoring</em>.</p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/100945.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/04/11/ef-power-tools-beta-2-prove-su-strada.aspx Wed, 11 Apr 2012 07:53:00 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/04/11/ef-power-tools-beta-2-prove-su-strada.aspx#feedback http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/100945.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/100945.aspx