|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
[C#/Nhibernate]Problema operatore 'LIKE'
Ciao a tutti
![]() Ho questo tipo di problema: Devo scrivere una funzione che filtri i risultati di una query. Codice:
using(ISession session = DBSessionManager.OpenSession()) { using(ITransaction tx = session.BeginTransaction()) { IQuery query = session.CreateQuery("from Contatto c where c.Cognome like '" + variable + "%'"); List<Contatto> contatti = (List<Contatto>)query.List<Contatto>(); } } Se ovviamente faccio: Codice:
"from Contatto c where c.Cognome like 'ben%'" La mia "variable" è una stringa presa da una textBox. Grazie mille ![]() RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Ok... riconsiderando che un ORM 'dovrebbe' farmi dimenticare di scrivere query:
Codice:
IList contatti = session.CreateCriteria(typeOf(Contatto)).Add(Expression.Like("Cognome", txtFiltro.Text + "%")).List(); ![]() RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Io userei LINQ to SQL, che ha gli stessi concetti di NHibernate, piu' tanti altri.
E dove potresti scrivere Codice:
var MyContact = from contatto in db.Contacts where contatto.Cognome.StartsWith(variabile) select c; Tutto strong type e controllato a compile time.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]()
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Vabbe', ma tanto NHibernate e' una cosa che viene da fuori.
Quindi tanto vale usare cio' che oggi si userebbe per risolvere problemi analoghi. Se invecevuoi usare il .net20 e solo quanto da lui offerto allora mi fermerei alle ExecuteQuery, ExecuteScalar e ExecuteNonQuery Con le quali peraltro si possono fare wrapper decisamente potenti, soprattutto se abbinate al concetto dei Generics. Da quando e' uscito LINQ2SQL le aziende che hanno usato NHibernate l'hanno fatto piu' che altro per continuita' con codice gia' scritto e per non dover riscrivere parti di librerie. Non penso siano tante quelle che hanno deciso deliberatamente di usarlo.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:04.