none
Query parametriche con LINQ to Entities RRS feed

  • Domanda

  • Ciao a tutti
    sto realizzando un progetto con EF e nel riscrivere le vecchie query in LINQ to Entities è nato un problema: come faccio a riscrivere una query del genere?

    string sql1 = string.Empty;
    if (par1 != string.Empty) sql1 = " AND par1='" + par1 + "' ";

    string sql2 = string.Empty;
    if (par2 != string.Empty) sql2 = " AND par2='" + par2 + "' ";

    string sql3 = string.Empty;
    if (par3 != string.Empty) sql3 = " AND par3='" + par3 + "' ";

    string sqlLimit = string.Empty;
    if (n > 0) sqlLimit = " LIMIT 0," + n);

    string sqlAscDesc = " DESC ";
    if (AscDesc != string.Empty) sqlAscDesc = " " + AscDesc + " ";

    string sqlOrderBy = "ORDER BY campo1 " + sqlAscDesc;
    if (orderby != string.Empty) sqlOrderBy = "ORDER BY " + orderby + sqlAscDesc;

    string sql = "SELECT * " +
                             "FROM tabella " +
                             "WHERE 1 " + sql1 + sql2 + sql3 +
                             sqlOrderBy +
                             sqlLimit;


    Questo sia che scrivo così
    var customers = from c in ctxCustomer
                    where ...

    sia così
    ctx.Customers.Where(...

    Grazie mille
    • Spostato Irina Turcu lunedì 3 dicembre 2012 14:14 Argomento Entity Framework + LINQ. (Da:Sviluppo su ASP.NET)
    venerdì 30 novembre 2012 16:29

Risposte

Tutte le risposte

  • Hai bisogno di creare una query dinamica.

    Trovi come fare qui: http://naspinski.net/post/Writing-Dynamic-Linq-Queries-in-Linq-to-Entities.aspx.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

    • Proposto come risposta Irina Turcu lunedì 3 dicembre 2012 14:23
    • Contrassegnato come risposta Irina Turcu mercoledì 25 settembre 2013 13:43
    venerdì 30 novembre 2012 17:01
  • Ciao Gemini78,

    You wrote on 30/11/2012 :

    sto realizzando un progetto con EF e nel riscrivere le vecchie query in LINQ to Entities è nato un problema: come faccio a riscrivere una query del genere?

    una soluzione è il predicate builder:
    http://www.albahari.com/nutshell/predicatebuilder.aspx

    .m



    blog @ //milestone.topics.it
    • Proposto come risposta Irina Turcu lunedì 3 dicembre 2012 14:23
    • Contrassegnato come risposta Irina Turcu mercoledì 25 settembre 2013 13:43
    venerdì 30 novembre 2012 17:01
  • Ciao

    se voglio rendere parametrica anche ORDER BY, come posso fare?

    Nel caso devo eseguire join tra tabelle, come faccio ad eseguire un join e un where parametrico?

    Es:

    string sql1 = string.Empty;
    if (par1 != string.Empty) sql1 = " AND par1='" + par1 + "' ";

    string sql2 = string.Empty;
    if (par2 != string.Empty) sql2 = " AND par2='" + par2 + "' ";

    string sql3 = string.Empty;
    if (par3 != string.Empty) sql3 = " AND par3='" + par3 + "' ";

    string sqlLimit = string.Empty;
    if (n > 0) sqlLimit = " LIMIT 0," + n);

    string sqlAscDesc = " DESC ";
    if (AscDesc != string.Empty) sqlAscDesc = " " + AscDesc + " ";

    string sqlOrderBy = "ORDER BY campo1 " + sqlAscDesc;
    if (orderby != string.Empty) sqlOrderBy = "ORDER BY " + orderby + sqlAscDesc;

    string sql = "SELECT * " +
                             "FROM tabella t1 INNER JOIN tabella t2 ON t1.t=t2.t " +
                             "WHERE 1 " + sql1 + sql2 + sql3 +
                             sqlOrderBy +
                             sqlLimit;

    Chiedo scusa se faccio un sacco di domande a volte anche sempli, ma è la prima volta che utilizzo EF.

    Grazie

    lunedì 3 dicembre 2012 16:02
  • In pratica hai riscritto la domanda iniziale... Cosa non ti è chiaro dei suggerimenti che ti abbiamo fornito io e Mauro?

    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

    lunedì 3 dicembre 2012 17:20
  • Ciao

    Capita spesso di creare dinamicamente anche 'ORDER BY' passando il campo e il tipo di ordinamento. Mi chiedevo com'è possibile fare questo con Linq to Entity.

    Inoltre, nella seconda query ho aggiunto il join perchè non mi era chiaro come e se si poteva eseguire il join utilizzando predicate builder, ma ho trovato un esempio.

    Naturalmente, dato che ho appena iniziato a studiare EF, ho una gran confusione ed esempi che per voi posso sembrare chiari per me non lo so.

    Dove posso trovare altri esempi, possibilmente semplici, di predicate builder?

    Meglio utilizzare linq dynamic o predicate builder?

    Grazie mille

    lunedì 3 dicembre 2012 17:35