Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Query con PredicateBuilder
giovedì 06 dicembre 2012 - 13.26
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
.NET 4.0
Gemini
Profilo
| Expert
856
messaggi | Data Invio:
gio 6 dic 2012 - 13:26
Ciao a tutti
Sto per la prima volta utilizzando EF e ho generato le classi POCO dal DataModel.
Per scrivere le query parametri sto provando ad utilizzare PredicateBuilder.
Pensavo di aver capito come funzionava, ma al lato pratico... non ci ho capito nulla :-)
Ho questa query:
string sqlStatus = string.Empty;
if (status == "ON")
sqlStatus = " AND isapproved='1' ";
else if (status == "OFF")
sqlStatus = " AND isapproved='0' ";
string sql = "SELECT u.* " +
"FROM aspnet_Users u INNER JOIN aspnet_Membership m ON u.UserId=m.UserId " +
"WHERE 1 " + sqlStatus +
"GROUP BY u.UserId " +
"ORDER BY u.UserName";
Devo riscrevere la query utilizzando PrediteBuilder e quì nascono i problemi. Negli esempi che ho trovato tutti i predicati sono definiti in funzioni, mentre io vorrei definire le condizioni nella stessa funzione in cui definisco l'interrogazione che devo eseguire.
Partendo da questo esempio:
staticvoid QueryCustomers (Expression<Func<Purchase, bool>> purchasePredicate)
{
var data = newDemoData ();
var query =
from c in data.Customers.AsExpandable ()
where c.Purchases.Any (purchasePredicate.Compile ())
select new {
c.Name,
FilteredPurchases =
from p in c.Purchases.Where (purchasePredicate.Compile ()) select p.Price
};
}
Ho scritto questo:
Expression<Func<aspnet_Membership, bool>> sqlStatus;
if(status == "ON")
sqlStatus = u => u.IsApproved == true;
else if(status == "OFF")
sqlStatus = u => u.IsApproved == false;
using (mcEntities context = new mcEntities())
{
var query =
from c in context.aspnet_Users.AsQueryable()
where c.aspnet_Membership.
}
Ora quando vado a scrivere 'where c.aspnet_Membership" non mi da 'Where' tra le possibili opzioni, ma visualizza i metodi e le proprietà di aspnet_Membership.
Dove sbaglio? Chi può riscrivere la mia query in modo da capire come fare per le altre query?
Dove posso trovare esempi pratici e non solo parti di codice per capire come funziona PredicateBuilder?
C'è qualche alternativa a PredicateBuilder per scrivere query parametriche con linq che mi permetta di avere un codice pulito, di definire le condizioni nella stessa procedura della quesry e utilizzare la struttura:
var test =
from...
where...
select...
Grazie mille
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !