Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Advanced LightSwitch e RIA Services: passare valori di startup alle sorgenti dati custom (con Visual Basic)

Nel normale sviluppo di WCF RIA Services per Silverlight, è possibile passare delle informazioni di inizializzazione al servizio direttamente nel costruttore; in questo modo è possibile ricevere degli argomenti il cui valore può essere assegnato a campi o proprietà, o comunque a membri che poi servono al servizio stesso.

Quando si creano estensioni di tipo Data Source per LightSwitch, si ricorre sempre ai WCF RIA Services ma in un modo un po' diverso. Ad esempio non è possibile passare parametri al costruttore del servizio e quindi passare delle informazioni di startup potrebbe sembrare più complicato.

In realtà è possibile ricorrere all c.d. connection string, che non deve essere confusa con quella che normalmente si usa per connettersi a un database, ma che in realtà è quella che ci viene richiesta quando ci colleghiamo alla data source personalizzata:

Come vedete il campo Connection String ci permette di inserire qualcosa. Questo qualcosa:

  • non è necessariamente una connection string a un db o ad altro servizio
  • può essere usato per passare informazioni di startup al servizio sotto forma di stringa
  • può essere descritto nella text box con un testo da noi specificato (come quello in figura)

Per capire come si fa, supponiamo di avere il seguente servizio LightSwitch-enabled all'interno del quale vogliamo inizializzare con un valore fornito dall'utente il valore del campo personName:

    <Description("Enter startup information here")>
    Public Class PersonDataSource
        Inherits DomainService
 
        Private personName As String
 
        Private _connectionString As String
 
        Public Overrides Sub Initialize(context As System.ServiceModel.DomainServices.Server.DomainServiceContext)
            MyBase.Initialize(context)
 
            If WebConfigurationManager.ConnectionStrings(GetType(PersonDataSource).FullName) IsNot Nothing Then
                _connectionString = WebConfigurationManager.ConnectionStrings(GetType(PersonDataSource).FullName).ConnectionString
            End If
 
            If String.IsNullOrEmpty(_connectionString) = False Then
                Me.personName = _connectionString
            Else
                Me.personName = "Default-supplied value"
            End If
        End Sub
 
        <Query(IsDefault:=True)>
        Public Function GetPeople() As IQueryable(Of Person)
            'Your logic here....
        End Function
 
    End Class

Considerazioni varie:

  1. l'attributo Description permette di specificare il testo descrittivo che verrà visualizzato nel box della stringa di connessione. Questo è utile per dire all'utente cosa deve inserire e in che forma
  2. il costruttore non viene usato per ricevere argomenti di startup
  3. si fa piuttosto l'override del metodo Initialize. Questo, oltre a chiamare il suo corrispondente nella classe base, tramite la proprietà ConnectionStrings dell'oggetto WebConfigurationManager recupera la stringa di connessione del servizio; quest'ultima altro non è che ciò che lo sviluppatore ha inserito nella textbox Connection Strings di cui sopra
  4. il valore di questa connection string può essere elaborato o assegnato direttamente a campi, proprietà, altri metodi come parametro

Ad esempio, se nella text box io inserissi il mio nome e cognome, al momento di creare la sorgente dati nell'applicazione LightSwitch automaticamente il campo personName sarebbe assegnato con "Alessandro Del Sole" e quindi potrei usare questa informazione per tutto ciò che mi serve.

Questo è l'unico modo per passare informazioni di startup a una sorgente dati personalizzata in LightSwitch. Vi ricordo la documentazione ufficiale MSDN in merito alla creazione di data source personalizzate per il nostro IDE preferito.

Alessandro

Print | posted on mercoledì 21 dicembre 2011 14:22 | Filed Under [ Visual Basic Silverlight e Windows Phone WCF Data Services/WCF RIA Services/OData Visual Studio LightSwitch ]

Powered by:
Powered By Subtext Powered By ASP.NET