20 messaggi dal 25 aprile 2009
Come si configura l2sql in un applicazione 3-layer?

La perplessità nasce dal fatto che se usassi l2sql nel DAL dovrei ricostruirmi a mano un object model che userei per comunicare con il BLL ma mi sembra un lavoro ridondante visto che ho gia un OM per l2sql nel file .dbml.
Allora ho pensato di generare il file .dbml fuori dal DAL e di usarlo oltre che nel DAL con l2sql anche per passare i dati da e verso il BLL che li usa chiaramente senza il datacontext ma come entita pure. Anche questa mi sembra però una forzatura e poi non so fino a che punto funzioni visto che le suddette classi non sono solo un object model ma fanno di piu: mappano il db usando i vari attributi e soprattutto gli EntityRef e EntitySet.

Ho googlato un po' stamattina ma leggo pareri discostanti, una cosa è certa: non sono il primo ad essersi fatto questa domanda. C'è chi addirittura parla di usare l2sql direttamente nel BLL ma non sono daccordo perche si perde uno degli aspetti importanti del DAL: rendere l'applicazione indipendente dal datastore.

lumi?
Michele
Ciao,

io direi che L2S *è* il DAL, con in più anche l'object model, costituito dalle classi generate dal designer. Non vedo particolari controindicazioni ad utilizzarle per scambiare dati tra i vari layer dell'applicazione.

A presto,
m.
20 messaggi dal 25 aprile 2009
Ciao Marco grazie.
Mi sto schiarendo meglio le idee anche dando un occhiata ad un esempio pubblicato proprio qui su aspitalia: pubs_linq che come dici tu mette il dbml nell'area common e lo usa come object model. Non ho avuto molto tempo per guardare il codice però devo dire che ho trovato parecchie spunti per correggere delle mie impostazioni sbagliate (per esempio trovo molto interessante il fatto di incapsulare in un unica classe che implementa idisposable il context con tutte le funzioni DAL delle singole classi). Quello che non ho ben capito (uso l'esempio di pubs) è se nel momento in cui io dal mio BLL mi carico un Book posso continuare a fare riferimento a entita correlate (tramite gli EntityRef&Set) anche al di fuori del datacontext e cioè se posso scrivere dopo aver pescato un libro:

string Author1 = Book.Author[0].Nome;

Michele.
Certo, avendo però l'accortezza di mantenere il datacontext attivo o di caricare anche la proprietà Author senza usare il lazy load.

Ciao,
m.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.