Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Matthieu MEZIL

I love .Net

Abonnements

Actualités

Locations of visitors to this page English blog

Entity Framework Include avec Func v2

J'ai défini un Include qui prend un Func en paramètre.

Cool. Mais le problème c'est que je suis limité aux relations avec un seul niveau. En effet, je ne sais pas traiter Include("Products.Order_Details")?

J'ai donc modifier mon code comme ceci :

public static class ObjectQueryExtension

{

    public static ObjectQuery<T> Include<T>(this ObjectQuery<T> mainQuery, Expression<Func<T, object>> subSelector)

    {

        return mainQuery.Include(FuncToString(subSelector.Body));

    }

    private static string FuncToString(Expression selector)

    {

        switch (selector.NodeType)

        {

            case ExpressionType.MemberAccess:

                return ((selector as MemberExpression).Member as Reflection.PropertyInfo).Name;

            case ExpressionType.Call:

                var method = selector as MethodCallExpression;

                return FuncToString(method.Arguments[0]) + "." + FuncToString(method.Arguments[1]);

            case ExpressionType.Quote:

                return FuncToString(((selector as UnaryExpression).Operand as LambdaExpression).Body);

        }

        throw new InvalidOperationException();

    }

    public static K Include<T, K>(this EntityCollection<T> mainQuery, Expression<Func<T, object>> subSelector)

        where T : EntityObject, IEntityWithRelationships

        where K : class

    {

        return null;

    }

    public static K Include<T, K>(this T mainQuery, Expression<Func<T, object>> subSelector)

        where T : EntityObject

        where K : class

    {

        return null;

    }

}

et je peux maintenant faire ça :

context.Categories.Include(ca => ca.Products.Include<Products, Order_Details>(p => p.Order_Details).Include<Order_Details, Orders>(od => od.Orders))

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Publié vendredi 6 juin 2008 23:54 par Matthieu MEZIL

Classé sous : , ,

Commentaires

# re: Entity Framework Include avec Func v2 @ samedi 7 juin 2008 12:40

Tu pourrais faire un switch sur le NodeType du selector, ça éviterait tous les doubles cast.

Jb Evain

# re: Entity Framework Include avec Func v2 @ samedi 7 juin 2008 18:15

Merci beaucoup pour la remarque Jean-Baptiste. Surtout, si tu as d'autres remarques comme ça n'hésite surtout pas.

J'ai modifié mon code.

Matthieu MEZIL

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Hello World! par Le blog de hamid le il y a 1 heure et 21 minutes

- MSBuild Extension Pack sur codeplex par Michel Perfetti [Miiitch] le il y a 2 heures et 41 minutes

- TCB : Travailler en équipe sans réseau par The Mit's Blog le il y a 5 heures et 51 minutes

- Accès anonyme et les pages Forms / viewlsts.aspx... par Nicolas Humann le il y a 9 heures et 44 minutes

- l'Atelier 4 du coach C# est disponible par Bernard Fedotoff le il y a 11 heures et 19 minutes

- [WPF] Formatter l’affichage lors d’un binding, via StringFormat par Thomas Lebrun le il y a 16 heures et 21 minutes

- WSC08 : Le bilan, Les Photos, Les Webcasts à voir ou à revoir par Blog de Daniel TIZON [daniel] le 10-07-2008, 01:14

- SharePoint et ses DB : Avez vous pensé à les "Tweaker" ? par The Mit's Blog le 10-07-2008, 00:45

- NTttcp : Mesurer la vitesse d'un réseau par Blog d'Olivier Huet le 10-07-2008, 00:21

- Un nouveau quizz par Matthieu MEZIL le 10-06-2008, 21:37