Passa ai contenuti principali

Post

Visualizzazione dei post con l'etichetta LINQ

Mapping dinamico con LINQ to SQL

In questo post vi vorrei mostrare un modo per poter cambiare il mapping di LINQ to SQL in modo da puntare a tabelle differenti ma referenziate allo stesso modo all’interno di un datacontext LINQ to SQL. Immaginiamo di avere un semplicissimo database (che chiameremo Archivio) con due tabelle assolutamente uguali in struttura: Creiamo la nostra applicazione di prova (una semplice windows form) e aggiungiamo un modello LINQ 2 SQL (file .dbml). A questo punto trasciniamo (prendendola dalla finestra Server Explorer) una delle due tabelle (ad esempio la Principale) sul nostro design e cambiamo il nome all’entità generata dal designer chiamandola Tabella Per poter cambiare al volo il mapping del datacontext è necessario ricavare l’xml che descrive il mapping stesso. Per fare questo possiamo ricorrere all’utility SQLMetal.exe (la stessa che Visual Studio utilizza per generare il dbml) da riga di comando. Nel nostro caso eseguiamo il seguente comando: sqlmetal.exe /map:Archivio.ma...

Recuperare le informazioni di mapping delle entità in Linq2SQL

In questo piccolo post vorrei mostrarvi un modo per recuperare, dato il tipo di un oggetto generato con il designer di Lnq2SQL, la tabella di mapping e le eventuali colonne di mapping delle singole proprietà. Quando generiamo il modello dei dati in Linq2SQL, l’ambiente di sviluppo crea per noi il codice VB.NET per la definizione delle classi che mappano le nostre tabelle e il DataContext per accedere alla banca dati. Supponiamo di avere una tabella di clienti: e di generare il modello Linq2SQL. In questo caso Visual Studio genera per noi una classe Clienti: <Table(Name:= "dbo.Clienti" )> _ Partial Public Class Clienti      Implements System.ComponentModel.INotifyPropertyChanging,  _                 System.ComponentModel.INotifyPropertyChanged       .     .       <Colu...

VB.NET : Creare un file XML con gli appSettings del file di configurazione utilizzando LINQ

Questo piccolo tip mostra come è possibile creare un file XML in cui ricopiare le chiavi della sezione appSettings del file di configurazione dell’applicativo utilizzando LINQ ed in particolar modo la funzionalità di XML Literal del VB.NET. La funzione in esame è la seguente: Public Function CreateLocalConfigurationFile( ByVal fileName As String ) As Boolean Dim retval = True Dim xdoc As XDocument = _ <?xml version=" 1.0 " encoding=" UTF-8 " standalone=" yes "?> <configuration> <%= From key In ConfigurationManager.AppSettings.Keys _ Select <key name=<%= key %> value=<%= ConfigurationManager.AppSettings(key.ToString()) %>/> _ %> </configuration> Try Dim docPath = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) xdoc.Save(fileName) Catch ex As Exception ...

VB.NET : Aggregare stringhe con LINQ

Tip facile facile, ma a qualcuno potrebbe servire. Supponiamo di avere una lista di stringhe (magari come risultato di una query LINQ) e di voler ottenere una stringa con la concatenazione delle stesse: Dim list = CreateList() Dim concatStr = (From s In list _ Select s).Aggregate( Function (currentString, nextString) currentString + nextString) MessageBox.Show(concatStr) Il metodo CreateList non ci interessa, in questo momento, ma crea una lista di oggetti String. Protected Function CreateList() As IEnumerable( Of String ) Dim list As String () = {" stringa1 ", " stringa2 ", " stringa3 ", " stringa4 ", " stringa5 "} Return list.AsEnumerable() End Function Questo metodo potrebbe restituire una qualsiasi lista di oggetti di cui, nella select successiva recuperiamo solo stringhe. La stessa tecnica è utilizzabile per concatenare stringhe inserendovi un carattere separatore Dim list = CreateList() Dim...

VB.NET : Contare i caratteri di una stringa con LINQ

Vi sottopongo un piccolo tip su come contare i caratteri di una stringa utilizzando LINQ: Dim query = From c In stringa.ToCharArray() _ Group By c Into grouping = Group _ Order By c _ Select c,grouping.Count() Ad esempio, se stringa=”Sotto la panca la capra campa”, otteniamo: Technorati Tag: LINQ , VB.NET , LINQ to Object