Ricerca 
it-ITen-US
Register
Login
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:.
    Print     


DotNetWork Forums
Mapping & Queries in LinqToEntities
Last Post 06 Oct 2009 11:38 by adrien. 13 Replies.
Printer Friendly
Sort:
PrevPrev NextNext
You are not authorized to post a reply.
Author Messages Resolved

Posts:7

--
05 Oct 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 Oct 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 Oct 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 Oct 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 Oct 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 Oct 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 Oct 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 Oct 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 Oct 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 Oct 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 Oct 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 Oct 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 Oct 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 Oct 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 :-)
You are not authorized to post a reply.

Active Forums 4.1
       
Articoli
Mixed Fry - General purpouse classes (part 2)
Helper: A class to perform XML Serialization on data Classes
2007/10/21 | Author: Sabrina Cosolo
Mixed Fry - General Purpouse classes (Part 6)
Helper: Some method to organize our use of the File System
2007/10/28 | Author: Sabrina Cosolo
Codedom Getting Started part 3
The helper class with CodeDom Functionalities
2009/11/07 | Author: Sabna Cosolo
Our Dll's in the Add Reference .NET Tab
How to be able to show our DLLs in the Add reference Windows Under the .NET Tab.
2008/07/27 | Author: Sabrina Cosolo
Miniguida alla OOP con il .NET Framework- Parte II
Le Classi e l'Incapsulamento.
2008/10/09 | Author: Alberto De Luca 
ADO.NET Funzionalità di base
Effettuare una ricerca su recordset disconnessi tramite DataView
2007/12/02 | Author: Andrea Zingoni
Introduzione a Windows Presentation Foundation (parte 1)
La prima di una serie di traduzioni da articoli di MSDN o altre fonti che offrono un punto di partenza per iniziare a capire il WPF.
2007/07/29 | Author: Patrizia Cosolo
ADO.Net Getting Started (part 1)
An Helper library to use direct commands in SQL Server
2008/03/09 | Author: Sabrina Cosolo
    Print     
Home|Forums|Blogs|Mappa del sito
© 2007-2010 by DotNetWork  .:.  Terms Of Use  .:.  Privacy Statement  .:.  Login  .:.