Origine dati e join .NET 3.5 Linq
-
09-06-2019 - |
Domanda
Ho provato il nuovo strumento di creazione di siti Dynamic Data fornito con .NET 3.5.Lo strumento utilizza LINQ Datasources per ottenere i dati dal database utilizzando un file di contesto .dmbl come riferimento.Sono interessato a personalizzare una griglia di dati ma ho bisogno di mostrare i dati da più di una tabella.Qualcuno sa come farlo utilizzando l'oggetto LINQ Datasource?
Soluzione
Se le tabelle sono collegate da una chiave esterna, puoi facilmente fare riferimento a entrambe le tabelle poiché verranno unite automaticamente da linq (puoi vederlo facilmente se guardi nel tuo dbml e c'è una freccia che collega le tabelle) - in caso contrario, vedi se puoi aggiungerne uno.
Per fare ciò, puoi semplicemente usare qualcosa del genere:
<%# Bind("unit1.unit_name") %>
Dove nella tabella "unità" ha una chiave esterna che fa riferimento a un'altra tabella e si estrae la proprietà "unità" di "nome_unità"
Spero che abbia un senso.
Altri suggerimenti
(EDIT ha frainteso la domanda, rivedendo la mia risposta a quanto segue)
Il tuo LinqDataSource potrebbe puntare a una vista, che ti consente di superare il problema di non essere in grado di esprimere un Join nell'elemento reale.Da "Come:Crea classi LINQ to SQL mappate su tabelle e viste (O/R Designer)":
O/R Designer è un semplice mappatore relazionale di oggetti perché supporta solo relazioni di mappatura 1:1.In altre parole, una classe di entità può avere solo una relazione di mappatura 1:1 con una tabella o vista del database.La mappatura complessa, come la mappatura di una classe di entità su più tabelle, non è supportata.Tuttavia, puoi associare una classe di entità a una vista che unisce più tabelle correlate.
Non è possibile inserire più di un oggetto/origine dati su una griglia dati.Dovrai costruire un singolo ConceptObject che combini le proprietà esposte delle Entità della parte.Prova a utilizzare DB -> Entità L2S -> ConceptObject.Devi essere molto ingegnoso se il modello DB corrisponde al campo ConceptObject.
È meglio utilizzare un ObjectDataSource quando vuoi eseguire Linq più complesso e associare la tua griglia a ObjectDataSource.Bisogna però fare attenzione ai tipi anonimi che potrebbero darvi qualche problema, ma tutto è possibile...