Ricerca 
it-ITen-US
Registrazione
Accedi
In-Vesti Dotnetwork
IN-VESTI DNW!!!
Sono finalmente arrivate le nuovissime T-Shirt di DotNetWork!!! Con soli 15,00 € ci sosterrai nelle spese di gestione della Community e ti invieremo a casa una splendida maglietta.
Se vuoi contribuire al mantenimento di DotNetWork.it Vai sulla pagina Iscrizioni
Effettua il pagamento usando IWBank
Click per andare alla pagina di Iscrizione
Oppure un Bonifico bancario (le coordinate sono sulla pagina Iscrizioni), inviaci una mail a support@dotnetwork.it indicandoci la tua taglia e l'indirizzo di spedizione.  Non appena verificata la ricezione del pagamento provvederemo a spedirti la tua T-Shirt.  Le magliette sono disponibili nelle taglie S-M-L-XL-XXL (in caso di esaurimento di una delle taglie, indica quella di "Backup"). Grazie per IN-VESTIRTI con NOI!!!
.:DotNetWork Founders:.
    Stampa     


DotNetWork Forums
Mapping & Queries in LinqToEntities
Ultimo Post 06 ott 2009 11.38 by adrien. 13 Risposte.
Stampa immediata
Ordina:
PrevPrev ProssimoProssimo
Non sei autorizzato ad inviare una risposta.
Autore Messaggi Risolto

Posts:7

--
05 ott 2009 10.23  
Salve,
ho un progetto che si occupa di effettuare il mapping di un database e di fornire, in codice LinqToEntities, le query da effettuare sul db mappato. Il problema è il seguente: il codice che contiene le istruzioni per effettuare le query deve per forze essere "commentato" prima che sia effettuato il mapping. Solo dopo aver effettuato il mapping e dopo aver incluso nel progetto i file mappati (csdl, ssdl, msl) posso togliere dal commento il codice per la query.

Esempio:

using northwindModel;
[...]
using (northwindEntities nEntities = new northwindEntities())
[...]

Qui , prima di poter mandare in esecuzione il progetto, devo per forza commentare le due istruzioni di cui sopra, altrimenti (giustamente) il compilatore non sa dove andare a pescare "northwindModel", essendo il db non ancora mappato!
Dopo aver mappato il db, posso tornare sul codice per rimuovere i commenti e compilare le istruzione per le query.
Domanda: è possibile compilare l'intero progetto senza dover prima compiere tutte queste sporche manovre mooolto poco professionali?


Posts:657

--
05 ott 2009 10.41  
Ciao, perchè scrivi che:
il codice che contiene le istruzioni per effettuare le query deve per forze essere "commentato"

Come stai generando il mapping? Stai inventando tu qualcosa di tuo o utilizzi la procedura standard?
Rudy Azzan

Posts:7

--
05 ott 2009 10.55  
Mi spiego meglio.
Il codice che genera il mapping e il codice che esegue le query sul db mappato si trova tutto in unico file cs. Quando mando in esecuzione il progetto, per la prima volta, se lasciassi tutto così com'è, il compilatore mi darebbe errore. Questo perchè il comando "using cartelleModel" (ad esempio) non puo' essere eseguito, poichè si riferisce a file non ancora generati (csdl, ssdl, msl)! Tali file vengono creati solo DOPO aver effettuato il mapping. Quindi, la soluzione "maccheronica" che ho adottato è quella di mettere sotto commento le porzioni di codice che si occupano delle query e dell'inclusione dei file non ancora generati (codice che mi darebbe inevitabilmente un errore in fase di compilazione). Successivamente, dopo aver fatto il mapping, posso toglierle da sotto commento, includere i file generati nel progetto in LinqToEntities e ricompilare. Ovviamente, mi sembra tutto molto scomodo. Puoi suggerire un metodo più pulito?

PS: ho seguito le procedure di mapping (creazione manuale) indicate su msn.microsoft.com

Posts:657

--
05 ott 2009 11.16  
Perchè non utilizzi il mapping a design time? O il tuo problema è proprio il mapping a design con con i files genertati manualmente?
O usi il design o metti i files CSDL/MSL/SSDL in un file edmx,
leggi qui:
http://blogs.msdn.com/dsimmons/archive/2007/12/07/how-to-use-your-existing-csdl-msl-ssdl-files-in-the-entity-designer-ctp2.aspx

e poi visual studio si arrangia a compilare il tutto.
Rudy Azzan

Posts:7

--
06 ott 2009 08.57  
Creo i file CSDL/MSL/SSDL tramite codice e tutto in manuale!Il designer di visual studio non devo utilizzarlo.

Mi spieghi meglio il funzionamento del file edmx!!???

N.B. Dovrei fare tutto in manuale cioè col codice

Posts:657

--
06 ott 2009 09.28  
edmx è un file xml che definische l'entity data model, descrive lo schema del database e definisce il mapping.

Questo file in visual studio viene processato a design time dal "EntityModelCodeGenerator", il quale crea in automatico le classi di mapping e di accesso al database necessarie.

Tornando al tuo problema non ho capito chi è che ti compila le classe e genera il codice durante la compilazione del progetto, e ti obbliga a commentare le classi.

Se stai usando l'EdmGen.exe
http://msdn.microsoft.com/en-us/library/cc716790.aspx

O qualcosa di simile allora ti consiglio di usarlo prima della cmpilazione:
Nelle proprietà del progetto vai nella scheda "Build Events" e alla voce "Pre.build events command line" puoi chiamare il tuo exe, il tuo compilatore ... ciò che usi per generare le classi dai tuoi files "CSDL/MSL/SSDL".
Rudy Azzan

Posts:7

--
06 ott 2009 09.39  
.....
using cartelleModel;
...
//MAIN
switch (n)
{
case 1:
mapp.StartProcess();
break;

case 2:
using (cartelleEntities nEntities = new cartelleEntities())
{
ObjectQuery vista_nom = nEntities.nominativo_sdo;
......break;

Questo è tutto in una pagina di codice. Ora se compilo questa pagina mi da errore (using cartelleModel; e al acse2) e poichè non facendo prima il mapping del database non vede le entità create con i file CSDL/MSL/SSDL.

CAPITO???

Se invece commento il case 2 e l'using, e faccio prima il mapping tutto poi funziona.

Posts:657

--
06 ott 2009 10.07  

Capito benissimo:

Prima usi qualcosa per generare le classi, poi le usi...
Ma non puoi usare una cosa che non esiste.

Quindi potresti fare 2 progetti:
Il primo ti compila i files CSDL/MSL/SSDL e ti genera i files necessari.
Il secondo progetto Usa i files che hai compilato.

Se devi invece fare tutto dinamicamente diventa più complicato.
Che risultato devi ottenere?

Rudy Azzan

Posts:7

--
06 ott 2009 10.23  
Eseguo prima delle query su un database con LINQ TO ENTITES, prendo i risultati e li metto in un file TXT formattato in un certo modo

Posts:657

--
06 ott 2009 10.48  
Ecco..., è come ti ho scritto qualche post fa:
Tu stai usando "edmgen.exe"

Quindi se tu metti il testo del file "EdmSql.bat", (che mi hai mandato via mail)
nell'evento pre.build del progetto Visual Studio, lui ti sovrascrive il tuo file "Objects.cs", prima che venga compilato.
Quindi poi hai le tue classi disponibili per la vera e propria compilazione e il tuo problema è risolto.
Rudy Azzan

Posts:657

--
06 ott 2009 10.53  
Il problema (fra virgolette) è che "edmgen.exe" ti crea un file cs (o vb) dandogli in pasto un file xml che descrive il mapping al database. Questo file cs (o vb) prima di essere utilizzato deve venire compilato. Quidi sono 2 processi completamante diversi. E non possono vivere assieme nello stesso progetto. Quindi l'opzione di  pre-buid ti prepara il file cs (o vb) che verrà successivamente compilato.
Rudy Azzan

Posts:7

--
06 ott 2009 10.53  
ma se vedi bene il file BAT, io gli passo dei parametri con %1,%2 e così via, in base al tipo di database a cui devo connettermi. Info che io leggo dal file XML.

Come faccio a mettere nel pre-compilazione???non posso mica passargli i parametri che leggo dal file XML???

Posts:657

--
06 ott 2009 11.06  
Ti tocca fare 2 progetti allora...
Un exe che compilato genera il file cs o (vb) e lo copia nell'altro progetto (non compilato).
Il secondo che quando compili usa il file cs (o vb) generato dal primo.
Altre vie d'uscita non ne vedo..
Rudy Azzan

Posts:7

--
06 ott 2009 11.38  
mi sa di si....è l'unica soluzione!!!

Grazie di tutto Rudy, davvero sei stato preziosissimo

DOTNETWORK è stato l'unico sito che ha risposto alla mia problematica: GRANDIOSI :-)
Non sei autorizzato ad inviare una risposta.

Active Forums 4.1
       
Articoli
ADO.NET - Mini guida per l'utente
Introduzione agli oggetti dati di ADO.NET
2007/07/26 | Autore: Alberto De Luca
Le nostre Librerie nella finestra .NET di Add reference
Come fare in modo di visualizzare le nostre librerie nella finestra .NET dell'Add Reference di Visual Studio
2008/07/27 | Autore: Sabrina Cosolo
Autenticazione ASP.NET
Come funziona la configurazione dell'autenticazione ASP.NET? Scopriamolo tramite alcuni test.
2007/08/09 | Autore: Rudy Azzan
Miniguida alla OOP con il .NET Framework- Parte III
Un' importante eredità: l'ereditarietà
2009/02/08 | Autore: Alberto De Luca
ASP.NET immagini dinamiche con HttpHandler
Costruiamo un HttpHandler per la creazione di immagini dinamiche
2007/10/24 | Autore: Rudy Azzan
SQL Server Nozioni base (parte 2)
Come creare un database in SQL Server Usando solo il codice SQL
2008/03/09 | Autore: Sabrina Cosolo
Fritto Misto - Classi di uso comune(parte 4)
Helper: Una classe per il log di eventi, con evento, event handler, enumerazione.
2007/10/24 | Autore: Sabrina Cosolo
L'Albero degli elementi
Come iniziare a capire com'è fatto WPF (parte 3)
2007/08/13 | Autore: Patrizia Cosolo
    Stampa     
Home|Forums|Blogs|Mappa del sito
© 2007-2012 by DotNetWork  .:.  Condizioni d'uso  .:.  Privacy  .:.  Accedi  .:.