sapevo che prima o poi avreste tirato fuori una soluzione alternativa a questa cavolo di stringa ... ma cosa pensano quanto progettano i vari framework?! linq, ef non erano stati introdotti anche per liberarci dalle stringe e gli stupidi errori di battitura di ado.net? :-) corro a rimpiazzare la mia alternativa con questa che è molto più carina ed efficiente

Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna.
-Albert Einstein-
1 messaggio dal 06 maggio 2008
ciao, ottima idea! sapresti darmi anche qualche indicazione su come utilizzare il codice? cioè devo piazzarlo in una classe particolare, o come devo procedere per poterlo utilizzare?
Ho risolto da solo... e stranamente FUNZIONA!!! Incredibile ma vero

Avendo i repository derivati da ModelVC, che per sfruttare l'Include di EF usano IObjectQuery ed IIncludeObjectSet, basta aggiungere "where T : class" come segue

public static IObjectQuery<T> Include<T, TProp>(this IObjectQuery<T> oq, Expression<Func<T, TProp>> expression) where T : class
        {
            var body = expression.Body as MemberExpression;

            if (body == null)
                throw new ArgumentException("Parameter expression must be a MemberExpression");
            
            return oq.Include(body.Member.Name);
        }

Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna.
-Albert Einstein-
3.168 messaggi dal 06 settembre 2002
Contributi | Blog
scusa il ritardo... cmq meglio così :).

@bandierarossa devi mettere quel metodo in una classe statica e poi li dove usi il metodo importi il namespace della classe appena creata.

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
Figurati, anzi meglio così, almeno capisco qualcosa in più... cmq il fatto che funziona non implica che ho fatto bene, ma visto che non hai fatto correzioni, il metodo è passabile

Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna.
-Albert Einstein-
226 messaggi dal 08 ottobre 2010
Direi che è una grande trovata, solo che ho il problema di tradurlo in VB e non capisco così bene quello che hai scritto tanto da tradurlo da me...

Come posso fare per averlo in vb?
3.168 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

esistono tantissimi tool (online e free) in giro per la conversione automatica da c# a VB e viceversa. Io ho usato quello di Developerfusion e il risultato è questo.

<System.Runtime.CompilerServices.Extension> _
Public Shared Function Include(Of T As Class, TProp)(oq As IObjectQuery(Of T), expression As Expression(Of Func(Of T, TProp))) As IObjectQuery(Of T)
Dim body = TryCast(expression.Body, MemberExpression)

If body Is Nothing Then
Throw New ArgumentException("Parameter expression must be a MemberExpression")
End If

Return oq.Include(body.Member.Name)
End Function

HTH

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy

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.