Est-il possible d'utiliser des requêtes linq précompilées avec des référentiels? Actuel J'ai mes dépôts mis en place commeUtilisation de requêtes linq précompilées avec le modèle de référentiel dans EF
public class CustomerRepository : EntityRepository
{
private readonly IContext _context;
public CustomerRepository(UnitOfWork uow)
{
_context = uow.context;
}
}
je serais en mesure de créer une requête précompilée de la manière suivante en utilisant mes MyEntities réelles de classe de contexte: ObjectContext, IContext.
static Func<ObjectContext, int, Customer> _custByID;
public static Customer GetCustomer(int ID)
{
if (_custByID == null)
{
_custByID = CompiledQuery.Compile<MyEntities, int, Customer>
((ctx, id) => ctx.Customers.Where(c => c.CustomerID == id).Single());
}
return _custByID.Invoke(_context, ID);
}
Le problème est que les méthodes de compilation TArg0 prennent en compte un type dérivé de ObjectContext. Depuis tout mon but de l'utilisation de référentiels avec IContext était de cacher le code lié cadre d'entité en utilisant ce qui précède n'a pas de sens. Comment devrais-je utiliser les requêtes linq précompilées? Dois-je les déplacer dans une bibliothèque de classes distincte qui fait référence à mon modèle et à l'infrastructure de l'entité ou est-ce que ma compréhension des référentiels est incorrecte? J'utilise EF4 dans une application ASP.net.
Fait sens. Je crois que ma principale préoccupation était le test. J'avais utilisé un faux contexte pour tester mes fonctions de dépôt. Je crois que je ne serai pas capable de tester mes fonctions de référentiel en utilisant des requêtes linq précompilées maintenant sans frapper la strore de données? – nighthawk457
@ nighthawk457 Le code impliquant EF ne fait pas l'objet de tests unitaires mais de tests d'intégration. Voir [cette question] (http://stackoverflow.com/questions/5609508/asp-net-mvc3-and-entity-framework-code-first-architecture) – Eranga