Articoli con tag LightSwitch

LightSwitch & SQLite

Premetto che non avrei mai scritto un post sull’argomento, però dato che mi piace fare delle considerazioni, ne sfrutto l’occasione.

Partiamo subito dalle considerazioni. LightSwitch è un prodotto Microsoft che permette di realizzare applicazioni 3-Tier.
Dall’uscita del prodotto, subito sono sorte domande la cui risposta (imho) è negativa ovvero:
– Lightswitch è/tenta di sostituire Access? No. Access è Access, ha un altro target. Può sembrare simile, ma solo in lontananza.
– E’ possibile creare applicazioni 1-Tier? No. O meglio, LightSwitch non è pensato per questo.
– 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.
 
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.

Avendo premesso tutto questo (la parte secondo me importante), ecco come usare SQLite:

1) Utilizzare il provider ADO.NET scaricabile all’indirizzo http://system.data.sqlite.org.
Attualmente non è incluso l’addin per visual studio. Se servisse, installare il pacchetto (non più mantenuto) da http://sqlite.phxsoftware.com
2) Sviluppare aggiungendo un nuovo datasource e selezionando il provider SQLite.
3) Deployare l’applicazione normalmente.
4) Una volta effettuato il deploy, LS funziona correttamente ma è necessario configurare SQLite:
– aggiungere nella cartella di bin su IIS gli assembly dei provider: System.Data.Sqlite.dll e System.Data.Sqlite.Linq.dll.
– modificare il web.config per aggiungere il provider:
    <system.data>
        <DbProviderFactories>
            <remove invariant=”System.Data.SQLite”/>
            <add name=”SQLite Data Provider” invariant=”System.Data.SQLite” description=”.Net Framework Data Provider for SQLite” type=”System.Data.SQLite.SQLiteFactory, System.Data.SQLite” />
        </DbProviderFactories>
    </system.data>
– copiare il database di SQLite in una cartella nuova (che chiamerò dbfolder).
– occorre dare i permessi di modifica/scrittura alla cartella dbfolder all’application pool (quindi IIS AppPool/DefaultAppPool o altro)
– modificare la connection string nel web.config con il percorso del database SQLite.
 
Come si può notare, non è tanto un problema di LightSwitch, quanto di SQLite.
E’ vero che LS non è perfetto e migliorabile (cosa non lo è) però a volte la strada più semplice è la migliore.

Pubblicità

,

Lascia un commento

Lightswitch Tip#1 (ADV): custom control extension

Sicuramente una delle feature molto apprezzate di Lightswitch è la possibilità di creare proprie estensioni. E’ utile capire tuttavia come queste funzionano.

In primo luogo occorre specificare che un custom control è suddiviso in due componenti distinte:

  • L’implementazione del controllo, caratteristica che utilizza l’utente finale
  • La descrizione del controllo, che ne definisce le caratteristiche usate a design-time da Lightswitch.

Con questo post vorrei sottolineare come le due parti siano completamente disgiunte.
Il file di descrizione (lsml) viene usato dall’IDE di Lightswitch per presentare al developer un plus del controllo stesso, il suo comportamento, le sue proprietà, la sua struttura… in generale tutto quello che viene passato all’implementazione del controllo tramite IContentItem.
Guardate il seguente esempio:

<Control Name="ColumnChart"
  SupportedContentItemKind="Collection"
  ChildView="ChartSeriesCollection"           
  DesignerImageResource="SindControls.Charts.ColumnChart::ColumnChartImage">
  <Control.Attributes>
    <DisplayName Value="ColumnChart" />
  </Control.Attributes>
  <Control.SupportedDataTypes>
  </Control.SupportedDataTypes>
</Control>

<Control Name="ChartSeriesCollection"
  SupportedContentItemKind="Group"
  ParentView="ColumnChart"
  ChildView="ChartSeries"
  IsHidden="True"
  DesignerImageResource="SindControls.Charts.ColumnChart::SeriesCollectionImage">
  <Control.Attributes>
    <DisplayName Value="Series Collection"/>
  </Control.Attributes>
</Control>

<Control Name="ChartSeries"
  SupportedContentItemKind="Value"
  ParentView="ChartSeriesCollection"
  DesignerImageResource="SindControls.Charts.ColumnChart::SeriesImage">
  <Control.Attributes>
    <DisplayName Value="Series"/>
  </Control.Attributes>
  <Control.SupportedDataTypes>
    <SupportedDataType DataType=":Double"/>
    <SupportedDataType DataType=":Decimal"/>
    <SupportedDataType DataType=":Int16"/>
    <SupportedDataType DataType=":Int32"/>
    <SupportedDataType DataType=":Int64"/>
  </Control.SupportedDataTypes>
</Control>

In questo caso potreste aspettarvi la definizione via codice di 3 controlli, ColumnChart, ChartSeriesCollection and ChartSeries… beh, non è vero! Smile

Nel mio caso ho implementato solo il controllo ColumnChart. Il designer time prenderà in considerazione la tipologia dei figli, le proprietà, i tipi supportati e altro. Il mio controllo utilizzerà queste informazioni recuperandole da IContentItem.ChildItems nelle modalità e tempi in cui ritiene opportuno.

, ,

Lascia un commento

Creare un Value Custom Control riutilizzabile in LightSwitch

Segnalo la pubblicazione del mio primo articolo riguardo Microsoft LightSwitch 2011.

Nell’articolo si mostra come creare, tramite LS extensibility toolkit, un custom control utilizzabile dal design di LS.

Link: http://www.lightswitch.it/Contenuti/VediArticoli/tabid/136/ArticleId/60/Creare-un-Value-Custom-Control-riutilizzabile-in-LightSwitch.aspx

Il controllo è stato pubblicato anche nella VisualStudioGallery: http://visualstudiogallery.msdn.microsoft.com/6b554673-518a-4b94-94ff-300d5b50e20a, potete così scaricarlo direttamente da visual studio tramite Extension Manager.

Inoltre è possibile scaricare LS_SnapSlider.zip con articolo e codice qui: https://skydrive.live.com/?cid=086302121a4df1d2&sc=documents&id=86302121A4DF1D2%21126

Lascia un commento