<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>LightSwitch</title>
        <link>http://blogs.ugidotnet.org/ainotame/category/LightSwitch.aspx</link>
        <description>LightSwitch</description>
        <language>it</language>
        <copyright>Roberto Sarati</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>LightSwitch &amp; SQLite</title>
            <link>http://blogs.ugidotnet.org/ainotame/archive/2012/02/04/lightswitch-sqlite.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Premetto che non avrei mai scritto un post sull'argomento, però dato che mi piace fare delle considerazioni, ne sfrutto l'occasione.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Partiamo subito dalle considerazioni. LightSwitch è un prodotto Microsoft che permette di realizzare applicazioni 3-Tier in modo molto semplice e veloce.&lt;br /&gt;
Dall'uscita del prodotto, subito sono sorte domande la cui risposta (imho) è negativa ovvero:&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Lightswitch è/tenta di sostituire Access? No. Access è Access, ha un altro target. Può sembrare simile, ma solo in lontananza.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;E' possibile creare applicazioni 1-Tier? No. O meglio, LightSwitch non è pensato per questo.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;E' possibile utilizzare strumenti/tecniche che l'ide non permette velocemente di utilizzare? Ni. Si può fare ma a vostro rischio e pericolo. Questo significa che si può fare con difficoltà, con difficoltà si manterrà nelle prossime versioni, con difficoltà si potrà deployare ecc ecc&lt;/font&gt;&lt;font face="Arial" /&gt;&lt;/li&gt;
    &lt;font face="Arial"&gt;     &lt;font face="Arial" /&gt;&lt;/font&gt;&lt;/ul&gt;
    &lt;font face="Arial"&gt;&lt;font face="Arial"&gt;     &lt;font face="Arial"&gt;
    &lt;p&gt; Detto questo veniamo al punto. Imho, LS + SQLite = No. No perchè SQLite non è pensato per avere multiutenza (i lock vengono messi sul file intero==è come avere un lock su tutto il db), si può usare sqlserver express senza problemi, è 'complicato' da deployare.&lt;/p&gt;
    &lt;/font&gt;
    &lt;p&gt;&lt;font face="Arial"&gt;Avendo premesso tutto questo (la parte secondo me importante), ecco come usare SQLite:&lt;/font&gt;&lt;/p&gt;
    &lt;ol&gt;
        &lt;li&gt;&lt;font face="Arial"&gt;Utilizzare il provider ADO.NET scaricabile all'indirizzo http://system.data.sqlite.org.&lt;br /&gt;
        Attualmente non è incluso l'addin per visual studio. Se servisse, installare il pacchetto (non più mantenuto) da &lt;a href="http://sqlite.phxsoftware.com"&gt;http://sqlite.phxsoftware.com&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
        &lt;li&gt;&lt;font face="Arial"&gt;Sviluppare aggiungendo un nuovo datasource e selezionando il provider SQLite.&lt;/font&gt;&lt;/li&gt;
        &lt;li&gt;&lt;font face="Arial"&gt;Deployare l'applicazione normalmente.&lt;/font&gt;&lt;/li&gt;
        &lt;li&gt;&lt;font face="Arial"&gt;Una volta effettuato il deploy, LS funziona correttamente ma è necessario configurare SQLite:&lt;/font&gt;&lt;font face="Arial" /&gt;&lt;/li&gt;
        &lt;font face="Arial"&gt;         &lt;font face="Arial"&gt;  - aggiungere nella cartella di bin su IIS gli assembly dei provider: System.Data.Sqlite.dll e System.Data.Sqlite.Linq.dll. (attenzione alla versione x86 o x64)&lt;br /&gt;
         - modificare il web.config per aggiungere il provider:&lt;br /&gt;
         &amp;lt;system.data&amp;gt;&lt;br /&gt;
           &amp;lt;DbProviderFactories&amp;gt;&lt;br /&gt;
             &amp;lt;remove invariant="System.Data.SQLite"/&amp;gt;&lt;br /&gt;
             &amp;lt;add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for  SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /&amp;gt;&lt;br /&gt;
           &amp;lt;/DbProviderFactories&amp;gt;&lt;br /&gt;
         &amp;lt;/system.data&amp;gt;&lt;br /&gt;
         - copiare il database di SQLite in una cartella nuova (che chiamerò dbfolder).&lt;br /&gt;
         - occorre dare i permessi di modifica/scrittura alla cartella dbfolder all'application pool (quindi IIS AppPool/DefaultAppPool o altro)&lt;br /&gt;
         - modificare la connection string nel web.config con il percorso del database SQLit&lt;/font&gt;&lt;/font&gt;&lt;/ol&gt;
        &lt;font face="Arial"&gt;
        &lt;p&gt;&lt;font face="Arial"&gt;Come si può notare, non è tanto un problema di LightSwitch, quanto di SQLite, dei provider ADO ecc.&lt;br /&gt;
        E' vero che LS non è perfetto e migliorabile (cosa non lo è) però a volte la strada più semplice è la migliore.&lt;br /&gt;
        &lt;/font&gt;&lt;/p&gt;
        &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://blogs.ugidotnet.org/ainotame/aggbug/100750.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Roberto Sarati</dc:creator>
            <guid>http://blogs.ugidotnet.org/ainotame/archive/2012/02/04/lightswitch-sqlite.aspx</guid>
            <pubDate>Sat, 04 Feb 2012 15:03:16 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/ainotame/archive/2012/02/04/lightswitch-sqlite.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/ainotame/comments/commentRss/100750.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/ainotame/services/trackbacks/100750.aspx</trackback:ping>
        </item>
        <item>
            <title>[LightSwitch] Utilizzare l'ObjectContext ApplicationData da WCF Ria Service</title>
            <link>http://blogs.ugidotnet.org/ainotame/archive/2011/11/30/lightswitch-utilizzare-lobjectcontext-applicationdata-da-wcf-ria-service.aspx</link>
            <description>&lt;p&gt;LightSwitch permette di creare/gestire un database al suo interno senza utilizzare strumenti esterni. Questo DB è chiamato ApplicationData e verrà generato in produzione, in fase di deploy, utilizzando una connection string &lt;a target="_blank" href="http://www.lightswitch.it/Contenuti/VediArticoli/tabid/136/ArticleId/61/LightSwitch-Publish-Wizard.aspx"&gt;impostata tramite widzard&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cosa avviene in pratica:&lt;/p&gt;
&lt;p&gt; - La connessione viene memorizzata, sempre con lo stesso nome "_IntrinsicData", all'interno del web.config deployato.&lt;br /&gt;
 - l'ObjectContext di EF viene autogenerato nel file ServerGenerated\GeneratedArtifacts\ApplicationData.cs&lt;/p&gt;
&lt;p&gt;Per utilizzare l'ObjectContext in un WCF Ria Service quindi basta:&lt;br /&gt;
 - Aggiungere il file al progetto WCF Service (As Link dato che verrà rigenerato)&lt;br /&gt;
 - Recuperare l'ObjectContext nel seguente modo:&lt;/p&gt;
&lt;pre style="background: white; color: black; font-family: Consolas;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;EntityConnectionStringBuilder&lt;/span&gt; builder = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;EntityConnectionStringBuilder&lt;/span&gt;();&lt;br /&gt;builder.Metadata =&lt;br /&gt;  &lt;span style="color: rgb(163, 21, 21);"&gt;"res://*/ApplicationData.csdl|res://*/ApplicationData.ssdl|res://*/ApplicationData.msl"&lt;/span&gt;;&lt;br /&gt;builder.Provider = &lt;span style="color: rgb(163, 21, 21);"&gt;"System.Data.SqlClient"&lt;/span&gt;;&lt;br /&gt;builder.ProviderConnectionString =&lt;br /&gt;  &lt;span style="color: rgb(43, 145, 175);"&gt;WebConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"&lt;strong&gt;_IntrinsicData&lt;/strong&gt;"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;span style="color: blue;"&gt;var c&lt;/span&gt;ontext = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;&lt;strong&gt;ApplicationDataObjectContext&lt;/strong&gt;&lt;/span&gt;(builder.ConnectionString);&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;
In questo modo è possibile:&lt;br /&gt;
 - eseguire query complesse sul nostro db applicativo (quelle supportate dal provider di EF)&lt;br /&gt;
 - sopperire alle "mancanze espressive" delle query linq generate in LightSwitch e poter utilizzare entità custom definite nella nostra libreria (per esempio a fine reportistici)&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/ainotame/aggbug/100578.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Roberto Sarati</dc:creator>
            <guid>http://blogs.ugidotnet.org/ainotame/archive/2011/11/30/lightswitch-utilizzare-lobjectcontext-applicationdata-da-wcf-ria-service.aspx</guid>
            <pubDate>Wed, 30 Nov 2011 00:20:38 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/ainotame/archive/2011/11/30/lightswitch-utilizzare-lobjectcontext-applicationdata-da-wcf-ria-service.aspx#feedback</comments>
            <slash:comments>40</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/ainotame/comments/commentRss/100578.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/ainotame/services/trackbacks/100578.aspx</trackback:ping>
        </item>
    </channel>
</rss>