Entity Framework a radicalement changé depuis l'introduction de la version 1. EF 4.1 a amélioré les mappages Code First et Fluent qui sont vraiment impressionnants. Cependant, je m'inquiète des implémentations de requêtes complexes sur EF 4.1 car cela dépend fortement de DbContext. Entity SQL et Linq to Entities continuent à changer son comportement avec les requêtes SQL. Je pense que nous avons besoin d'un mécanisme de requête fort comme HQL ou des critères pour surmonter cela. Ce que tu penses ?Implémentation du référentiel générique Entity Framework avec IQuarable
Répondre
De nombreux ORM .NET modernes fournissent une implémentation IQueryProvider (y compris NHibernate). Je choisis de supprimer la dépendance directe sur EF en utilisant le modèle POCO T4, puis en le modifiant pour générer une interface (IMyRepository) qui renvoie des IQueryables simples au lieu de ObjectSets. L'implémentation sous-jacente de IMyRepository en utilisant un ObjectContext. Si nous décidons de nous éloigner de EntityFramework, nous pouvons simplement changer l'implémentation de IMyRepository pour utiliser LINQ IQueryProvider de quelqu'un d'autre. En outre, cela nous permet de travailler dans un scénario distribué. Par exemple, une implémentation de IMyRepository réside sur le client et utilise DataServiceClient (WCF Data Services) pour appeler le serveur, qui a une implémentation différente de IMyRepository, qui utilise directement Entity Framework.
Dans le cas du code d'abord, c'est également assez facile à faire. Vos classes sont déjà des POCOs ... donc faites que votre DbContext implémente une interface qui retourne IQueryables au lieu de DbSets.
Personnellement, j'injecte ensuite IMyRepository en utilisant l'injection de dépendance.
Mon dépôt générique Ressemble suit
public class Repository<TEntity, TPrimaryKey>: IRepository<TEntity, TPrimaryKey> where TEntity : class
{
public IQueryable<TEntity> GetQuery()
{
return this.UnitOfWork.GetQuery<TEntity>();
}
public IQueryable<T> LoadType<T>() where T : class
{
return this.UnitOfWork.GetQuery<T>();
}
}
Et Mon unité de travail va ici
public class UnitOfWork
{
/// <summary>
/// Gets the query.
/// </summary>
/// <typeparam name="TEntity">The type of the entity.</typeparam>
/// <returns></returns>
public IQueryable<TEntity> GetQuery<TEntity>() where TEntity:class
{
return this.DbContext.Set<TEntity>();
}
}
- 1. Entity Framework référentiel générique
- 2. Référentiel générique Entity Framework 4.1
- 3. Entity Framework 4 avec référentiel générique
- 4. Entity Framework Erreur de référentiel générique
- 5. Entity Framework Code Premier Héritage TPH avec référentiel générique
- 6. référentiel Mocking avec Entity Framework
- 7. Entity Framework 4 Référentiel?
- 8. Entity Framework 4: Référentiel générique: Comment déterminer l'EntitySetName?
- 9. Erreur dans la méthode de référentiel générique pour Entity Framework
- 10. Création d'un référentiel générique pour une application Entity Framework
- 11. Entity Framework: Référentiel générique et clés primaires de table
- 12. Entity Framework - MVC 4 - Architecture du référentiel
- 13. Méthode CreateOrUpdate très générique avec Entity Framework
- 14. Entity Framework Générique CRUD
- 15. Entity Framework compare générique
- 16. Référentiel WPF Prism Entity Framework
- 17. référentiel générique avec NHibernate
- 18. Entity Framework - Absence d'abstraction dans le référentiel
- 19. Entity Framework et problème modèle référentiel
- 20. Implémentation du référentiel
- 21. Problème résolvant un référentiel générique avec Entity Framework et un conteneur Castle Windsor
- 22. Implémentation du modèle de référentiel avec PetaPoco
- 23. Asp.net MVC 2 Entity Framework Méthode du référentiel générique. Comment mettre à jour une colonne spécifique?
- 24. Implémentation d'un référentiel générique en utilisant le code d'infrastructure Entity d'abord
- 25. Implémentation du référentiel Xml
- 26. Conception du référentiel générique
- 27. Référentiel générique avec fonction de suppression logicielle
- 28. ASP.Net Entity Framework et LINQ référentiel
- 29. Implémentation du référentiel Collections (DDD) avec Hibernate
- 30. Classe de référentiel d'échafaudage de Entity framework
Cependant, par exemple, si l'on veut se joindre à une requête avec deux Poços alors que nous voulons utiliser DbContext dans un référentiel. n'est-ce pas? – marvelTracker
Je ne comprends pas pourquoi cela ferait une différence? de i dans repo.MyEntity1s de j dans repo.MyEntity2s .... etc. – Jeff
Oui. Je l'ai maintenant. Merci pour l'explication. Je suis d'accord avec la mise en œuvre IQuerable nous devons fournir l'implémentation suivante et la méthode distincte pour le type de chargement comme suit. – marvelTracker