<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Under the hood</title>
	<atom:link href="https://pythonyan.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://pythonyan.wordpress.com</link>
	<description>&#34;An old developer story&#34;</description>
	<lastBuildDate>Sat, 17 Dec 2022 14:41:06 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>

<image>
	<url>https://pythonyan.wordpress.com/wp-content/uploads/2022/01/io.jpg?w=32</url>
	<title>Under the hood</title>
	<link>https://pythonyan.wordpress.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">1393879</site><cloud domain='pythonyan.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<atom:link rel="search" type="application/opensearchdescription+xml" href="https://pythonyan.wordpress.com/osd.xml" title="Under the hood" />
	<atom:link rel='hub' href='https://pythonyan.wordpress.com/?pushpress=hub'/>
	<item>
		<title>GitHub &#8211; Come eliminare un commit e relativa history</title>
		<link>https://pythonyan.wordpress.com/2022/12/17/github-come-eliminare-un-commit-e-relativa-history/</link>
					<comments>https://pythonyan.wordpress.com/2022/12/17/github-come-eliminare-un-commit-e-relativa-history/#respond</comments>
		
		<dc:creator><![CDATA[pythonyan]]></dc:creator>
		<pubDate>Sat, 17 Dec 2022 14:41:06 +0000</pubDate>
				<category><![CDATA[Git]]></category>
		<category><![CDATA[github]]></category>
		<guid isPermaLink="false">http://pythonyan.wordpress.com/?p=1215</guid>

					<description><![CDATA[Oggi ho avuto la necessità di utilizzare questo comando perchè avevo rilasciato una modifica che non dovevo far vedere su GitHub. L’esigenza era anche quella di eliminare della history il rilascio (era un dato sensibile che per errore era rimasto &#8230; <a href="https://pythonyan.wordpress.com/2022/12/17/github-come-eliminare-un-commit-e-relativa-history/">Continua a leggere <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><font face="Georgia"><a href="https://pythonyan.wordpress.com/wp-content/uploads/2022/12/apple-touch-icon-144x144-1.png"><img width="164" height="164" title="apple-touch-icon-144x144" align="left" style="margin: 0px 7px 0px 0px;border: 0px currentcolor;float: left;display: inline;background-image: none" alt="apple-touch-icon-144x144" src="https://pythonyan.wordpress.com/wp-content/uploads/2022/12/apple-touch-icon-144x144_thumb.png?w=164&#038;h=164" border="0"></a>Oggi ho avuto la necessità di utilizzare questo comando perchè avevo rilasciato una modifica che non dovevo far vedere su GitHub. L’esigenza era anche quella di eliminare della history il rilascio (era un dato sensibile che per errore era rimasto su un file di configurazione). Le operazioni sono abbastanza semplici ed ho usato GitHub Desktop per verificare quello che stavo facendo (ovviamente avrei potuto usare semplicemente la shell di Git).</font></p>
<p>Nel percorso in locale del nostro repository su cui abbiamo sincronizzato il repository su GitHub ho aperto la GitBash ed eseguito questo comando:</p>
<blockquote>
<p><strong><font face="Cascadia Code" size="2">git reset &#8211;soft HEAD~2</font></strong></p>
</blockquote>
<p>in 2 finale è relativo a quanto commit indietro volete andare, nel mio caso dovevo eliminarne due.</p>
<p>A questo punto però se andate su GitHub Desktop e provate a fare un push sul vostro repository in remote, lo strumento vi dice che il vostro branch è avanti di due commit rispetto al remote e dovete fare prima un pull per poi effettuare un push.</p>
<p>Ovviamente non è questo quello che desideriamo perchè altrimenti non risolviamo il problema del commit nella history ed anzi ne aggiungeremmo un altro alla storia. Per questo motivo e per forzare il push dobbiamo eseguire il seguente comando:</p>
<blockquote>
<p><strong><font face="Cascadia Code" size="2">git push origin +main –force</font></strong></p>
</blockquote>
<p>A questo punto possiamo eseguire il commit delle modifiche realmente desiderate, come nel mio caso.</p>
<p></p>
<blockquote><p><strong><font face="Cascadia Code" size="2"></p>
<p></p>
<p></font></strong></p></blockquote>
]]></content:encoded>
					
					<wfw:commentRss>https://pythonyan.wordpress.com/2022/12/17/github-come-eliminare-un-commit-e-relativa-history/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1215</post-id>
		<media:content url="https://0.gravatar.com/avatar/630202e276dc58ac7a0f13aa05d70bf335385f09ae3de71a962b107ce679e536?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pythonyan</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2022/12/apple-touch-icon-144x144_thumb.png" medium="image">
			<media:title type="html">apple-touch-icon-144x144</media:title>
		</media:content>
	</item>
		<item>
		<title>Risorse Python</title>
		<link>https://pythonyan.wordpress.com/2022/09/19/risorse-python/</link>
					<comments>https://pythonyan.wordpress.com/2022/09/19/risorse-python/#respond</comments>
		
		<dc:creator><![CDATA[pythonyan]]></dc:creator>
		<pubDate>Mon, 19 Sep 2022 13:33:48 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://pythonyan.wordpress.com/?p=1205</guid>

					<description><![CDATA[&#160; Segnalo questo link che secondo me è un ottimo punto di partenza per approfondire il linguaggio, infatti, oltre ad essere presenti le sezioni dedicate alle caratteristiche di base, ci sono degli interessanti rimandi alle funzionalità più avanzate.&#160;]]></description>
										<content:encoded><![CDATA[<div><img src="https://pythonyan.wordpress.com/wp-content/uploads/2022/01/python-logo402x-2.png?w=640">&nbsp;</div>
<p>Segnalo questo <a href="https://www.freecodecamp.org/news/python-code-examples-simple-python-program-example/">link</a> che secondo me è un ottimo punto di partenza per approfondire il linguaggio, infatti, oltre ad essere presenti le sezioni dedicate alle caratteristiche di base, ci sono degli interessanti rimandi alle funzionalità più avanzate.&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://pythonyan.wordpress.com/2022/09/19/risorse-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1205</post-id>
		<media:content url="https://0.gravatar.com/avatar/630202e276dc58ac7a0f13aa05d70bf335385f09ae3de71a962b107ce679e536?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pythonyan</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2022/01/python-logo402x-2.png" medium="image" />
	</item>
		<item>
		<title>Python journey [2]</title>
		<link>https://pythonyan.wordpress.com/2022/01/19/python-journey-2/</link>
					<comments>https://pythonyan.wordpress.com/2022/01/19/python-journey-2/#respond</comments>
		
		<dc:creator><![CDATA[pythonyan]]></dc:creator>
		<pubDate>Wed, 19 Jan 2022 18:05:32 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://pythonyan.wordpress.com/?p=1197</guid>

					<description><![CDATA[Proseguendo nelle intenzioni dichiarate nel precedente post , oggi mi voglio dedicare ad una delle funzionalità più utilizzate in Python: le list comprehension. Queste funzionalità in verità sono applicabili non sono alle liste, come vedremo, ma anche agli oggetti di &#8230; <a href="https://pythonyan.wordpress.com/2022/01/19/python-journey-2/">Continua a leggere <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><img src="https://pythonyan.wordpress.com/wp-content/uploads/2022/01/python-logo402x-2.png?w=640" /></p>
<p>Proseguendo nelle intenzioni dichiarate nel precedente <a href="https://bit.ly/3fEkoUQ">post </a>, oggi mi voglio dedicare ad una delle funzionalità più utilizzate in Python: le list comprehension.</p>
<p>Queste funzionalità in verità sono applicabili non sono alle liste, come vedremo, ma anche agli oggetti di tipo dictionary e rappresentano un modo per scrivere meno codice, comunque efficiente e leggibile.</p>
<p>Quello che otterremo al termine dell&#8217;esecuzione del comando per la generazione di liste(o dictionary) saranno liste contenenti dati che avremo opportunamente lavorati secondo degli specifici criteri, scrivendo una sola riga di codice.</p>
<p>Come sempre un esempio è meglio di tante parole.</p>
<p>Immaginiamo di avere una lista di parole che compongono una frase e da essa dobbiamo estrapolare una nuova lista restituendoci solo le parole la cui lunghezza è minore di 8 caratteri.</p>
<p>Utilizzando un approccio classico avremmo creato un ciclo che itera sulla lista tante volte quante sono le parole che la compongono ed, applicando il controllo richiesto, avrebbe alimentato, in caso positivo, una lista esterna con i risultati ottenuti.</p>
<div style="color:#000000;background-color:#ffffff;">
<pre><i>phrase = "Oggi pomeriggio studieremo Python"</i>
<i>word_list = phrase.split()</i>
<i>result = []</i>
<i>for i in range(len(word_list)):</i>
<i>  if len(word_list[i]) &gt; 8:</i>
<i>    result.append(word_list[i])</i>
<i>print (result)
<b>
</b></i></pre>
</div>
<p>Vediamo invece come, con una list comprehension, è possibile scrivere la stessa cosa con una sola riga:</p>
<div style="color:#000000;background-color:#ffffff;">
<pre><i>phrase = <span style="color:#a31515;">"Oggi pomeriggio studieremo Python"</span></i>
<i>word_list = phrase.split()</i>
<i><b>result_with_list= [item <span style="color:#0000ff;">for</span> item <span style="color:#0000ff;">in</span> word_list <span style="color:#0000ff;">if</span> len(item) &gt; 8]</b></i><u></u>
<i>print(result_with_list)
<b>
</b></i></pre>
</div>
<p>L&#8217;uso di questa funzionalità ovviamente si presta ad operazioni a volte più complesse,  ne sono esempio infatti i casi in cui, lavorando con le frasi e con le tematiche inerenti, potrebbe servire avere a disposizione un modo altrettanto rapida per rendere flat una lista di liste (caso per esempio di un topic contenente più frasi).</p>
<p>Con il classico metodo, che non riporterò per brevità, avrei dovuto fare due iterazioni una interna all&#8217;altra, con le list comprehension invece il lavoro diventa molto più semplice e leggibile:</p>
<div style="color:#000000;background-color:#ffffff;">
<pre>phrases = [<span style="color:#a31515;">"Oggi studio Python"</span>, <span style="color:#a31515;">"Domani studierò Java"</span>, <span style="color:#a31515;">"Non studierò mai il cirillico"</span>]

<b><i>flatten_list = [word</i></b>
<b><i>                  <span style="color:#0000ff;">for</span> phrase <span style="color:#0000ff;">in</span> phrases</i></b>
<b><i>                  <span style="color:#0000ff;">for</span> word <span style="color:#0000ff;">in</span> phrase.split()</i></b>
<b><i>]</i></b>
print (flatten_list)
</pre>
</div>
<p>Come vediamo il meccanismo è molto potente ma nello stesso tempo abbastanza semplice da capire, quanto detto per le liste è ovviamente valido per i dictionary, magari argomento di un altro post.</p>
<p>Stay tuned.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://pythonyan.wordpress.com/2022/01/19/python-journey-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1197</post-id>
		<media:content url="https://0.gravatar.com/avatar/630202e276dc58ac7a0f13aa05d70bf335385f09ae3de71a962b107ce679e536?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pythonyan</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2022/01/python-logo402x-2.png" medium="image" />
	</item>
		<item>
		<title>Python journey[1]</title>
		<link>https://pythonyan.wordpress.com/2022/01/13/python-journey1/</link>
					<comments>https://pythonyan.wordpress.com/2022/01/13/python-journey1/#respond</comments>
		
		<dc:creator><![CDATA[pythonyan]]></dc:creator>
		<pubDate>Thu, 13 Jan 2022 11:30:15 +0000</pubDate>
				<category><![CDATA[NET]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://pythonyan.wordpress.com/?p=1173</guid>

					<description><![CDATA[Per motivi lavorativi sono tornato a sviluppare alcune cose in Python e, per motivi didattici ma anche per la memoria che ormai fa cilecca sempre più spesso,&#160; voglio scrivere dei piccoli post per le cose che ritengo man mano utili, &#8230; <a href="https://pythonyan.wordpress.com/2022/01/13/python-journey1/">Continua a leggere <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<div style="color:#000000;background-color:#FFFFFF;">
<pre><img src="https://pythonyan.wordpress.com/wp-content/uploads/2022/01/python-logo402x.png?w=640">
</pre>
</div>
<p>Per motivi lavorativi sono tornato a sviluppare alcune cose in Python e, per motivi didattici ma anche per la memoria che ormai fa cilecca sempre più spesso,&nbsp;</p>
<p>voglio scrivere dei piccoli post per le cose che ritengo man mano utili, con la speranza che magari ad alcuni possano tornare utili.</p>
<p>Per i miei studi, uso l&#8217;ottimo Ide <a href="https://www.jetbrains.com/pycharm/">Pycharm</a> in versione community edition, oppure l&#8217;altrettanto ottimo <a href="https://code.visualstudio.com/">Visual Studio Code</a>.</p>
<p>Il primissimo snippet di codice che ritengo utile, è qualcosa che serve quando non si sanno a priori il numero di parametri da passare ad una funzione.</p>
<div style="color:#000000;background-color:#FFFFFF;">
<pre># funzione somma elementi 
def sum_item(*args,**kwargs): 
  print(args,kwargs) 
  totale = sum(args) 
  print(totale) 
  totale_kwargs = sum(kwargs.values()) 
  print(totale_kwargs)  
# richiamo la funzione 
sum_item(<span>2</span>,<span>4</span>,<span>6</span>, a=<span>3</span>,b=<span>4</span>)
</pre>
</div>
<p>L&#8217;esempio è molto semplice ma ci aiuta a capire come l&#8217;uso dei due parametri &#8220;<i>*args</i>&#8221; e &#8220;<i>**kwargs</i>&#8221; che hanno &#8220;<i>*&#8221;</i> e &#8220;<i>**</i>&#8221; rispettivamente che indicano dei parametri&nbsp;</p>
<p>speciali che prendono tutto quello che viene immesso come parametri normali nel primo e tutti quelli con una chiave nel secondo.</p>
<p>Nel nostro caso, come vedete, essendo **kwargs dei dizionari, per sommarne il valore, dando per scontato che vengano immessi dei numeri, dobbiamo usare <i>&#8220;kwargs.values&#8221;</i>.&nbsp;</p>
<p><b></b><i></i><u></u><sub></sub><sup></sup><strike></strike></p>
]]></content:encoded>
					
					<wfw:commentRss>https://pythonyan.wordpress.com/2022/01/13/python-journey1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1173</post-id>
		<media:content url="https://0.gravatar.com/avatar/630202e276dc58ac7a0f13aa05d70bf335385f09ae3de71a962b107ce679e536?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pythonyan</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2022/01/python-logo402x.png" medium="image" />
	</item>
		<item>
		<title>Operazioni CRUD con EF6 e MVC5</title>
		<link>https://pythonyan.wordpress.com/2015/04/24/operazioni-crud-con-ef6-e-mvc5/</link>
					<comments>https://pythonyan.wordpress.com/2015/04/24/operazioni-crud-con-ef6-e-mvc5/#respond</comments>
		
		<dc:creator><![CDATA[pythonyan]]></dc:creator>
		<pubDate>Fri, 24 Apr 2015 20:26:14 +0000</pubDate>
				<category><![CDATA[MVC]]></category>
		<category><![CDATA[EF6]]></category>
		<category><![CDATA[MVC5]]></category>
		<guid isPermaLink="false">http://pythonyan.wordpress.com/?p=1116</guid>

					<description><![CDATA[Scrivere operazioni CRUD di base è molto semplice se utilizziamo&#160; Entity Framework 6 e la sua desinenza “Database First” in accoppiata alle fuzionalità di scaffolding di MVC 5 che ci evitano di scrivere una riga di codice. Per applicare la &#8230; <a href="https://pythonyan.wordpress.com/2015/04/24/operazioni-crud-con-ef6-e-mvc5/">Continua a leggere <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Scrivere operazioni CRUD di base è molto semplice se utilizziamo&nbsp; Entity Framework 6 e la sua desinenza “Database First” in accoppiata alle fuzionalità di scaffolding di MVC 5 che ci evitano di scrivere una riga di codice.</p>
<p>Per applicare la modalità <strong>“Database First”</strong> Visual Studio 2013, anche versione Express per Web, offre un comodo designer per generare un data model completo di classi con proprietà a partire dallo schema di un database con le relative tabelle e relazioni, il tutto salvato in un file xml avente estensione .edmx.</p>
<p>Per la creazione del database possiamo utilizzare un <a title="" href="https://msdn.microsoft.com/library/ms233817(v=vs.120).aspx">DbLocal</a> creando un progetto <strong>Database Project</strong>:</p>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/datadb1.png"><img title="DataDB" style="float:none;margin-left:auto;display:block;margin-right:auto;" alt="DataDB" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/datadb_thumb1.png?w=640&#038;h=390" width="640" height="390"></a></p>
<p>il quale si presenterà come un progetto vuoto dove potremo aggiungere le tabelle del nostro database e uno script di post deployment che ci permetterò di aggiungere dei dati di test per il nostro database dopo aver fatto il deploy del progetto, attraverso l’esecuzione del progetto, che si occuperà della creazione del database.</p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:e5f003ac-63e5-4037-a5df-c7df2683704a" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<pre style="white-space:normal;">
<pre class="brush: sql; light: false; pad-line-numbers: false; title: ; wrap-lines: false; notranslate">
MERGE INTO Category AS Target
USING (VALUES 
        (1, 'PRI'), 
        (2, 'PEN')
)
AS Source (IdCategoria, Descrizione)
ON Target.IdCategoria = Source.IdCategoria
WHEN NOT MATCHED BY TARGET THEN
INSERT (IdCategoria, Descrizione)
VALUES (IdCategoria, Descrizione);

MERGE INTO Contracts AS Target 
USING (VALUES 
        (1,GETDATE(), GETDATE(), 1)
) 
AS Source (IdContratto,DataContratto,DataScadenza,IdCategoria) 
ON Target.IdContratto = Source.IdContratto 
WHEN NOT MATCHED BY TARGET THEN 
INSERT (IdContratto,DataContratto,DataScadenza,IdCategoria) 
VALUES (IdContratto,DataContratto,DataScadenza,IdCategoria);

MERGE INTO Customers AS Target 
USING (VALUES 
        (1,'MRORSS69E27H501L', 'MARIO','ROSSI', '1969-05-27','M')
) 
AS Source (IdContratto,CodiceFiscale,Nome,Cognome,DataNascita,Sesso) 
ON Target.CodiceFiscale = Source.CodiceFiscale 
WHEN NOT MATCHED BY TARGET THEN 
INSERT (IdContratto,CodiceFiscale,Nome,Cognome,DataNascita,Sesso) 
VALUES (IdContratto,CodiceFiscale,Nome,Cognome,DataNascita,Sesso);
</pre>
</div>
<p><font style="background-color:#cccccc;"><strong>N.B. attenzione che ogni qualvolta eseguite il progetto lo script post deploy viene eseguito</strong></font></p>
<p>Di seguito la struttura del progetto dopo aver aggiunto le tabelle e lo script di deploy</p>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/datadbproject1.png"><img title="DataDBProject" style="float:none;margin-left:auto;display:block;margin-right:auto;" alt="DataDBProject" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/datadbproject_thumb1.png?w=265&#038;h=151" width="265" height="151"></a></p>
<p>Dal <strong>Sql Server Objects Explorer</strong> possiamo notare la struttura del database creato nel database server locale, in questo caso <strong>(localdb)ProjectsV12</strong>:</p>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/sqlserverobjectexplorer.png"><img loading="lazy" title="SqlServerObjectExplorer" style="float:none;margin-left:auto;display:block;margin-right:auto;" alt="SqlServerObjectExplorer" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/sqlserverobjectexplorer_thumb.png?w=326&#038;h=586" width="326" height="586"></a></p>
<p>A questo punto siamo pronti per creare la nostra applicazione web MVC 5 per lo scopo prefissato. Una volta creata la soluzione si dovrà scaricare, tramite Nuget, Entity Framework giunto alla versione 6.1, in questo modo sarà possibile creare un modello dati sulla base del database appena creato. Per far questo aggiungiamo nella cartella Model un file di tipo .edmx </p>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/bankdatamodel.png"><img loading="lazy" title="BankDataModel" style="float:none;margin-left:auto;display:block;margin-right:auto;" alt="BankDataModel" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/bankdatamodel_thumb.png?w=640&#038;h=382" width="640" height="382"></a></p>
<p>alla finestra successiva scegliamo di farci creare la nostra classe model dal database, quindi definiamo la stringa di connessione e via via gli altri parametri .</p>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/bankdatadesigner.png"><img loading="lazy" title="BankDataDesigner" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="BankDataDesigner" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/bankdatadesigner_thumb.png?w=610&#038;h=548" width="610" height="548"></a></p>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/connection.png"><img loading="lazy" title="Connection" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="Connection" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/connection_thumb.png?w=644&#038;h=318" width="644" height="318"></a></p>
<p>Quindi scegliamo le tabelle che saranno le nostre entità e salviamo la nostra classe model con un namespace a piacere</p>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/edmx.png"><img loading="lazy" title="EDMX" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="EDMX" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/edmx_thumb.png?w=636&#038;h=573" width="636" height="573"></a></p>
<p>La nostra solution conterrà adesso diversi file in più mentre in automatico apparirà il designer di EF con le classi appena create.</p>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/modello.png"><img loading="lazy" title="modello" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="modello" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/modello_thumb.png?w=644&#038;h=208" width="644" height="208"></a></p>
<p>In particolare la classe <strong>BankDataModelContext,</strong> che eredita dalla classe <strong>DbContext</strong> , fornisce una proprietà di tipo DbSet per ogni modello collegato alle tabelle scelte per la generazione. Prima di proseguire dobbiamo effettuare la build del progetto altrimenti per la prossima attività di creazione automatica del codice CRUD in seguito alla attività di scaffolding che faremo non otterremo nulla.</p>
<p>I passaggi per terminare l’attività sono semplici e si possono riassumere nel seguente modo:</p>
<ul>
<li>aggiungere un controller di tipo Scaffolded come da esempio:</li>
</ul>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/image2.png"><img loading="lazy" title="image" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="image" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/image_thumb2.png?w=644&#038;h=364" width="644" height="364"></a></p>
<ul>
<li>nella maschera successiva proseguire :</li>
</ul>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/scaffold.png"><img loading="lazy" title="Scaffold" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="Scaffold" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/scaffold_thumb.png?w=644&#038;h=451" width="644" height="451"></a></p>
<ul>
<li>quindi scegliere la classe che fungerà da controller presa dal datacontext appena generato</li>
</ul>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/addcontroller.png"><img loading="lazy" title="AddController" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="AddController" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/addcontroller_thumb.png?w=644&#038;h=421" width="644" height="421"></a></p>
<p>Ripetere l’operazione per tutte le classi per cui si devono fare operazioni CRUD, nel nostro caso Customers e Category e otterremo una solution del genere:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/views.png"><img loading="lazy" title="Views" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="Views" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/views_thumb.png?w=133&#038;h=244" width="133" height="244"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/controllers.png"><img loading="lazy" title="controllers" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="controllers" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/controllers_thumb.png?w=217&#038;h=114" width="217" height="114"></a></p>
<p>&nbsp; Come possiamo vedere all’interno dei controllers troviamo tutte le operazioni CRUD sul model scelto, inoltre è stata creata per noi la view corrispondente, non ci rimane che agganciarle al nostro menu </p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:71bfba2b-1edc-4bf6-8b5e-d0e7f0040267" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<pre style="white-space:normal;">
<pre class="brush: csharp; title: ; notranslate">
@Html.ActionLink(&amp;quot;Contracts&amp;quot;, &amp;quot;Index&amp;quot;, &amp;quot;Contracts&amp;quot;)
@Html.ActionLink(&amp;quot;Customers&amp;quot;, &amp;quot;Index&amp;quot;, &amp;quot;Customers&amp;quot;)
@Html.ActionLink(&amp;quot;Categories&amp;quot;, &amp;quot;Index&amp;quot;, &amp;quot;Categories&amp;quot;)
</pre>
</div>
<p>Siamo pronti per lavorare!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://pythonyan.wordpress.com/2015/04/24/operazioni-crud-con-ef6-e-mvc5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1116</post-id>
		<media:content url="https://0.gravatar.com/avatar/630202e276dc58ac7a0f13aa05d70bf335385f09ae3de71a962b107ce679e536?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pythonyan</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/datadb_thumb1.png" medium="image">
			<media:title type="html">DataDB</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/datadbproject_thumb1.png" medium="image">
			<media:title type="html">DataDBProject</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/sqlserverobjectexplorer_thumb.png" medium="image">
			<media:title type="html">SqlServerObjectExplorer</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/bankdatamodel_thumb.png" medium="image">
			<media:title type="html">BankDataModel</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/bankdatadesigner_thumb.png" medium="image">
			<media:title type="html">BankDataDesigner</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/connection_thumb.png" medium="image">
			<media:title type="html">Connection</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/edmx_thumb.png" medium="image">
			<media:title type="html">EDMX</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/modello_thumb.png" medium="image">
			<media:title type="html">modello</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/image_thumb2.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/scaffold_thumb.png" medium="image">
			<media:title type="html">Scaffold</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/addcontroller_thumb.png" medium="image">
			<media:title type="html">AddController</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/views_thumb.png" medium="image">
			<media:title type="html">Views</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/controllers_thumb.png" medium="image">
			<media:title type="html">controllers</media:title>
		</media:content>
	</item>
		<item>
		<title>Aggiornamento progetti Mvc 4 verso Mvc 5</title>
		<link>https://pythonyan.wordpress.com/2015/04/23/aggiornamento-progetti-mvc-4-verso-mvc-5/</link>
					<comments>https://pythonyan.wordpress.com/2015/04/23/aggiornamento-progetti-mvc-4-verso-mvc-5/#respond</comments>
		
		<dc:creator><![CDATA[pythonyan]]></dc:creator>
		<pubDate>Thu, 23 Apr 2015 11:03:02 +0000</pubDate>
				<category><![CDATA[NET]]></category>
		<guid isPermaLink="false">http://pythonyan.wordpress.com/?p=1094</guid>

					<description><![CDATA[Se mi trovate nella situazione per cui dovete aggiornate un progetto alla versione 4 alla 5 di MVC potreste trovarvi nella condizione in cui vi si presenta il seguente errore: Dovete riaggiornare la libreria WebHelpers di Microsoft.AspNet tramite il comando &#8230; <a href="https://pythonyan.wordpress.com/2015/04/23/aggiornamento-progetti-mvc-4-verso-mvc-5/">Continua a leggere <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Se mi trovate nella situazione per cui dovete aggiornate un progetto alla versione 4 alla 5 di MVC potreste trovarvi nella condizione in cui vi si presenta il seguente errore:</p>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/image.png"><img loading="lazy" title="image" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="image" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/image_thumb.png?w=252&#038;h=28" width="252" height="28"></a></p>
<p>Dovete riaggiornare la libreria WebHelpers di Microsoft.AspNet tramite il comando sulla console manager di Nuget:</p>
<p><font color="#0000ff">Install-Package Microsoft.AspNet.WebHelpers</font></p>
<p>Se poi doveste trovarvi ancora l’errore seguente:</p>
<p><a href="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/image1.png"><img loading="lazy" title="image" style="background-image:none;padding-top:0;padding-left:0;margin:0;display:inline;padding-right:0;border-width:0;" border="0" alt="image" src="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/image_thumb1.png?w=244&#038;h=29" width="244" height="29"></a></p>
<p>Allora dovete applicare, sempre tramite Nuget, il seguente comando:</p>
<p><font color="#0000ff">Install-Package Microsoft.AspNet.WebPages.Data</font></p>
]]></content:encoded>
					
					<wfw:commentRss>https://pythonyan.wordpress.com/2015/04/23/aggiornamento-progetti-mvc-4-verso-mvc-5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1094</post-id>
		<media:content url="https://0.gravatar.com/avatar/630202e276dc58ac7a0f13aa05d70bf335385f09ae3de71a962b107ce679e536?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pythonyan</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="https://pythonyan.wordpress.com/wp-content/uploads/2015/04/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Tools per sviluppo Web</title>
		<link>https://pythonyan.wordpress.com/2014/10/29/tools-per-sviluppo-web/</link>
					<comments>https://pythonyan.wordpress.com/2014/10/29/tools-per-sviluppo-web/#respond</comments>
		
		<dc:creator><![CDATA[pythonyan]]></dc:creator>
		<pubDate>Wed, 29 Oct 2014 09:18:36 +0000</pubDate>
				<category><![CDATA[NET]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">http://pythonyan.wordpress.com/?p=1086</guid>

					<description><![CDATA[Su Visual Studio Magazine un elenco di tools che ogni sviluppatore Web dovrebbe avere, ovviamente ognuno di noi ha le sue preferenze ma alcuni sono dei must se si vuole lavorare “comodi” .&#160;]]></description>
										<content:encoded><![CDATA[<p>Su <a href="http://visualstudiomagazine.com/articles/2014/10/01/14-tools-and-extensions-for-web-app-development.aspx" target="_blank">Visual Studio Magazine</a> un elenco di tools che ogni sviluppatore Web dovrebbe avere, ovviamente ognuno di noi ha le sue preferenze ma alcuni sono dei must se si vuole lavorare “comodi” .&nbsp; </p>
]]></content:encoded>
					
					<wfw:commentRss>https://pythonyan.wordpress.com/2014/10/29/tools-per-sviluppo-web/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1086</post-id>
		<media:content url="https://0.gravatar.com/avatar/630202e276dc58ac7a0f13aa05d70bf335385f09ae3de71a962b107ce679e536?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pythonyan</media:title>
		</media:content>
	</item>
		<item>
		<title>Storage illimitato su OneDrive per abbonati Office 365</title>
		<link>https://pythonyan.wordpress.com/2014/10/29/storage-illimitato-su-onedrive-per-abbonati-office-365/</link>
					<comments>https://pythonyan.wordpress.com/2014/10/29/storage-illimitato-su-onedrive-per-abbonati-office-365/#respond</comments>
		
		<dc:creator><![CDATA[pythonyan]]></dc:creator>
		<pubDate>Wed, 29 Oct 2014 08:14:37 +0000</pubDate>
				<category><![CDATA[Varie]]></category>
		<category><![CDATA[OneDrive]]></category>
		<guid isPermaLink="false">http://pythonyan.wordpress.com/?p=1084</guid>

					<description><![CDATA[Buone notizie per i sottoscrittori di Office 365: a partire dal 27 Ottobre lo storage su OneDrive è illimitato e non si dovranno affrontare costi aggiuntivi. Maggiori dettagli sul blog di OneDrive.&#160;]]></description>
										<content:encoded><![CDATA[<p>Buone notizie per i sottoscrittori di Office 365: a partire dal 27 Ottobre lo storage su OneDrive è illimitato e non si dovranno affrontare costi aggiuntivi. Maggiori dettagli sul <a href="https://blog.onedrive.com/office-365-onedrive-unlimited-storage/" target="_blank">blog</a> di OneDrive.&nbsp; </p>
]]></content:encoded>
					
					<wfw:commentRss>https://pythonyan.wordpress.com/2014/10/29/storage-illimitato-su-onedrive-per-abbonati-office-365/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1084</post-id>
		<media:content url="https://0.gravatar.com/avatar/630202e276dc58ac7a0f13aa05d70bf335385f09ae3de71a962b107ce679e536?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pythonyan</media:title>
		</media:content>
	</item>
		<item>
		<title>Iniziare con DocumentDB</title>
		<link>https://pythonyan.wordpress.com/2014/10/27/iniziare-con-documentdb/</link>
					<comments>https://pythonyan.wordpress.com/2014/10/27/iniziare-con-documentdb/#respond</comments>
		
		<dc:creator><![CDATA[pythonyan]]></dc:creator>
		<pubDate>Mon, 27 Oct 2014 13:32:54 +0000</pubDate>
				<category><![CDATA[NET]]></category>
		<guid isPermaLink="false">http://pythonyan.wordpress.com/?p=1082</guid>

					<description><![CDATA[Avete in mente di iniziare ad utilizzare uno storage NoSql? Ne avete abbastanza dei db relazionali? No, tranquilli non sto facendo pubblicità a nessuno ma un’occhiata a DocumentDb di Microsoft disponibile fra le offerte di Azure la darei, partendo dall’ &#8230; <a href="https://pythonyan.wordpress.com/2014/10/27/iniziare-con-documentdb/">Continua a leggere <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<blockquote>
<p>Avete in mente di iniziare ad utilizzare uno storage NoSql? Ne avete abbastanza dei db relazionali? No, tranquilli non sto facendo pubblicità a nessuno ma un’occhiata a DocumentDb di Microsoft disponibile fra le offerte di Azure la darei, partendo dall’ <a href="http://azure.microsoft.com/en-us/documentation/articles/documentdb-introduction/" target="_blank">introduzione</a>.&nbsp; </p>
</blockquote>
]]></content:encoded>
					
					<wfw:commentRss>https://pythonyan.wordpress.com/2014/10/27/iniziare-con-documentdb/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1082</post-id>
		<media:content url="https://0.gravatar.com/avatar/630202e276dc58ac7a0f13aa05d70bf335385f09ae3de71a962b107ce679e536?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pythonyan</media:title>
		</media:content>
	</item>
		<item>
		<title>Windows 10 TP Build ISO</title>
		<link>https://pythonyan.wordpress.com/2014/10/27/windows-10-tp-build-iso/</link>
					<comments>https://pythonyan.wordpress.com/2014/10/27/windows-10-tp-build-iso/#respond</comments>
		
		<dc:creator><![CDATA[pythonyan]]></dc:creator>
		<pubDate>Mon, 27 Oct 2014 11:07:00 +0000</pubDate>
				<category><![CDATA[Windows 10]]></category>
		<guid isPermaLink="false">http://pythonyan.wordpress.com/?p=1079</guid>

					<description><![CDATA[Su WindowsBlogItalia c’è un interessante articolo su come estrapolare la ISO dalla nuova release di WIndows 10 TP.]]></description>
										<content:encoded><![CDATA[<p>Su WindowsBlogItalia c’è un interessante <a href="http://www.windowsblogitalia.com/2014/10/guida-per-creare-una-iso-delle-nuove-build-di-windows-10-tp/" target="_blank">articolo</a> su come estrapolare la ISO dalla nuova release di WIndows 10 TP.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://pythonyan.wordpress.com/2014/10/27/windows-10-tp-build-iso/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1079</post-id>
		<media:content url="https://0.gravatar.com/avatar/630202e276dc58ac7a0f13aa05d70bf335385f09ae3de71a962b107ce679e536?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pythonyan</media:title>
		</media:content>
	</item>
	</channel>
</rss>
