"Linq for NHibernate"...prima o poi doveva accadere

Lo dicevo qualcosa come due mesi fa al webcast che abbiamo fatto assieme io e Lorenzo,

la famosa Sessione di Domande e Risposte (in cui tra l'altro ci siamo divertiti un casino...), che per come stavano andando le cose avevo intravisto una possibile sinergia tra Linq e NHibernate ed ecco la slide di allora:

Mi sarebbe piaciuto scriverci su qualcosa...ma in fondo in fondo...sapevo che "uno a caso" ci sarebbe arrivato prima...e quindi Linq for NHibernate comincia a prendere forma...

Avere Linq nel linguaggio e una trasformazione delle expression in clausole HQL o Criteria (poco importa) potrebbe voler dire il declino di qualsiasi forma di QueryObject Pattern, che tra l'altro è veramente tanto impegnativo. Disegnare un modello che comprenda anche inclusion (termine Linq che in NH ha un equivalente al FETCH di HQL o al SetFetch dei Criteria) e projection non è per niente facile.

Come al solito...mitico!

Print | posted on giovedì 22 marzo 2007 15.27

Feedback

# re: "Linq for NHibernate"...prima o poi doveva accadere

left by Andrea Saltarello at 22/03/2007 15.48 Gravatar
Janky, LINQ è una idea *geniale* e non l'ho mai nascosto sin da quando lo vidi a PDC2003. Sin da allora sono state le sue implementazioni ad essere carenti: DLINQ non era nè carne nè pesce e a Redmond se ne sono accorti, visto che il "figlioccio" "Linq to SQL" è un IMHO un ActiveRecord niente male (query/update, lazy load, ...).
La "novità" però è che ora sappiamo che EF, che rischia cmq di essere un buon ORM, non supporterà un approccio POCO e quindi non mi stupisce che "qualcuno" abbia deciso di provare a capire se si possa buttare via HQL e passare ad un linguaggio di query type-safe

# re: "Linq for NHibernate"...prima o poi doveva accadere

left by Giancarlo Sudano at 22/03/2007 16.14 Gravatar
No Andrea...(non so se tu sai qualcosa in più per varie NDA)...ma dal blog del team mi hanno già detto che l'approccio POCO dovrebbero metterlo nella prossima drop.
Ma non è quello il punto. Il rischio di "diventare serio"per EF non lo corre di certo avendo un approccio POCO.

Bisogna ancora capire "se" e "come" ragiona in termini di transitività, di tracciamento, di gestione contestuale della persistenza, di quanti e quali stati di persistenza gestisca sulle entity (transienza, sincronizzazione, rimozione).

Non si trova un esempio in giro per capire quanta scalabilità ha il contesto dei dati di EF.
Quello lo farebbe diventare un ORM serio.

Proprio con quest'ottica sto cominciando uno studio in parallelo.

# re: "Linq for NHibernate"...prima o poi doveva accadere

left by Andrea Saltarello at 22/03/2007 16.25 Gravatar
Janky, AFAIK l'approccio POCO non lo avremo proprio: semplicemente, potremo evitare di ereditare la classe Entity implementando nelle nostre classi di dominio le interfacce richieste dalla infrastruttura.
Non "brucio" la classe base, ma mi vedo imposti cmq dei layer supertype (seppure astratti) e ciò significa (almeno apparentemente) poter mappare solo classi delle quali abbiamo il sorgente.
Io spero che a Redmond "rinsaviscano", ma settimana scorsa mi sembravano "belli convinti"

# re: "Linq for NHibernate"...prima o poi doveva accadere

left by Giancarlo Sudano at 22/03/2007 17.40 Gravatar
mmm....allora la cosa è "pesante"...:-(
Magari con un po di AOP e un mixin si riesce a pulire la situzione lo stesso...ma che tristezza!

Ma visto che eri li non potevi tirargli un calcio negli stinchi?
:-)

# re: "Linq for NHibernate"...prima o poi doveva accadere

left by Andrea Saltarello at 22/03/2007 18.16 Gravatar
Calcio negli stinchi? Janky, ti sei perso la scena del PM di ASP.NET che ci parla del toolkit MVC: io gli faccio notare che MVP sarebbe preferibile per poter condividere il presenter tra GUI tecnologicamente eterogenee, nonché per poter testare i presenter mockando le view. Lui fa uno sguardo del tipo: "Si, va beh..." e il Bok (seduto accanto a me) mi dice a bassa voce (in italiano): "tanto non glie ne frega un caXXo"...

# Hello

left by WAHID Said at 03/07/2007 23.07 Gravatar
Hello

Can you help me for learn NHIBERNATE in VC#

please

MERCI
Comments have been closed on this topic.