)(The following tutorial explains how to examine queries sent to SQL Server.). Vous pouvez généralement trouver la solution au problème en comparant votre code au code terminé. When you instantiate the repository in your controller, you'll use the interface so that the controller will accept a reference to any object that implements the repository interface. Another method for managing the Entity Framework Repository and UnitOfWork pattern is by using a global UnitOfWork object. Vous avez maintenant créé une couche d’abstraction entre le contrôleur et le contexte de base de données Entity Framework. Dans ce didacticiel, vous allez implémenter une classe de référentiel pour chaque type d’entité.In this tutorial you'll implement a repository class for each entity type. The unit of work class coordinates the work of multiple repositories by creating a single database context class shared by all of them. L’une d’entre elles vous permet de transmettre uniquement l’ID de l’entité à supprimer, et l’autre prend une instance d’entité. Lorsque le contrôleur s’exécute sous une classe de test unitaire, il reçoit un référentiel qui fonctionne avec les données stockées d’une manière que vous pouvez facilement manipuler à des fins de test, telles qu’une collection en mémoire.When the controller runs under a unit test class, it receives a repository that works with data stored in a way that you can easily manipulate for testing, such as an in-memory collection. One of these lets you pass in just the ID of the entity to be deleted, and one takes an entity instance. Dans la version précédente du code (avant d’implémenter le référentiel), la requête n’est pas envoyée à la base de données tant que vous n’avez pas appliqué les critères de recherche, lorsque ToPagedList est appelé sur l’objet IQueryable.In the previous version of the code (before you implemented the repository), the query is not sent to the database until after you apply the search criteria, when ToPagedList is called on the IQueryable object. Vous pouvez également créer une couche d’abstraction dans votre classe de contexte de base de données en utilisant des interfaces, You can also build an abstraction layer into your database context class by using. J'essaie de le faire selon ce blog . Pour une introduction au TDD avec une application MVC qui utilise le modèle de référentiel, consultez, For an introduction to TDD with an MVC application that uses the repository pattern, see. EF ne prend pas en charge les verrous pessimistes que vous souhaitez utiliser, mais vous pouvez essayer cette solution . (Vous ne fournissez pas de paramètre de chargement hâtif dans la signature GetByID, car vous ne pouvez pas effectuer de chargement hâtif avec la méthode Find. Dans ce didacticiel, vous allez découvrir des façons d’utiliser le référentiel et les modèles d’unité de travail pour les opérations CRUD.In this tutorial you'll see some ways to use the repository and unit of work patterns for CRUD operations. Vous avez maintenant implémenté les modèles de référentiel et d’unité de travail. Le contrôleur déclare maintenant une variable de classe pour un objet qui implémente l’interface, The controller now declares a class variable for an object that implements the. This generic repository will handle typical CRUD requirements. Je suis nouveau dans le noyau asp.net, donc je ne sais pas comment utiliser le modèle UnitOfWork. Le code de la méthode Get crée un objet IQueryable, puis applique l’expression de filtre, le cas échéant :The code in the Get method creates an IQueryable object and then applies the filter expression if there is one: Elle applique ensuite les expressions de chargement hâtif après l’analyse de la liste délimitée par des virgules :Next it applies the eager-loading expressions after parsing the comma-delimited list: Enfin, il applique l’expression orderBy s’il en existe un et retourne les résultats ; dans le cas contraire, elle retourne les résultats de la requête non triée :Finally, it applies the orderBy expression if there is one and returns the results; otherwise it returns the results from the unordered query: Quand vous appelez la méthode Get, vous pouvez effectuer un filtrage et un tri sur la collection IEnumerable retournée par la méthode au lieu de fournir des paramètres pour ces fonctions.When you call the Get method, you could do filtering and sorting on the IEnumerable collection returned by the method instead of providing parameters for these functions.