Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Abonnements

ALT .NET Demo

Mercredi dernier, j'ai animé une session pour la communauté ALT .NET sur Entity Framework.

Lors de cette session, j'ai notamment fait une demo avec du WCF, de l'Entity Framework avec du POCO et un pseudo provider LINQ côté client. Ce provider est particulièrement simpliste (développé en seulement 15 mins), n'est pas thread safe mais a l'intéressante particularité de laisser LINQ To Object prendre le relais quand mon provider LINQ ne sait pas gérer.

J'aimerais revenir sur le fonctionnement de mon provider LINQ qui est un peu particulier et plus précisément sur ce code :

public static class CategoryClient

{

    public static MyQueryable<Category> Categories

    {

        get

        {

            ClientLINQ.AllEntities = true;

            return GetCategories().ToMyQueryable();

        }

    }

 

    private static IEnumerable<Category> GetCategories()

    {

        List<Category> value;

        if (ClientLINQ.AllEntities)

            value = Context.Instance.CategoryContract.GetAllCategories();

        else

            value = Context.Instance.CategoryContract.GetCategories(ClientLINQ.IncludeValues, ClientLINQ.WhereValue, ClientLINQ.OrderByValue, ClientLINQ.SkipValue, ClientLINQ.TakeValue);

        foreach (var category in value)

            yield return category;

    }

}

Comment ce code marche ? Comment alors que le set de AllEntities à true réinitialise les propriétés IncludeValues, WhereValues, etc

IncludeValues = null;

WhereValue = null;

OrderByValue = null;

SkipValue = 0;

TakeValue = 0;

Comment AllEntities pourrait-il être à faux dans la méthode GetCategories alors que l'instruction qui suit le AllEntities = true est l'appel à GetCategories et que cette méthode commence avec un test sur AllEntities ?

En fait, il faut remarquer que cette méthode utilise la syntaxe yield return. Du coup, elle ne sera exécutée que lorsque la propriété Categories sera itérée. Cela signifie donc que l'appel aux différentes méthodes de LINQ se fera préalablement.

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é mardi 28 avril 2009 22:38 par Matthieu MEZIL

Classé sous : , , , , ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01