Joindre plusieurs table à l'aide de générique référentiel patten avec Entity framework avec l'unité de travail
Je développe une application web à l'aide de MVC4 avec Entity framework 5.
J'ai créé générique référentiel pour l'accès à la base de données avec l'unité de travail.
Avoir le dessous de deux référentiel,
- CustomerRepository - table Client
- LibraryRepository - Bibliothèque de la table
Ces deux tables ne sont pas liés les uns avec les autres( il n'y a pas de clé étrangère de la relation ).
Veux écrire une requête en combinant ces référentiel. Est possible d'écrire une requête par la combinaison de deux différents référentiel?
Si oui, s'il vous plaît laissez-moi savoir le.
OriginalL'auteur kannan Eswar | 2014-03-12
Vous devez vous connecter pour publier un commentaire.
Si votre des référentiels génériques exposer un IQueryable méthode, vous devriez être en mesure d'utiliser LINQ joindre à la requête de deux dépôts:
Il peut y avoir des limites à ce que la requête peut le faire, mais j'ai fait une rapide de preuve de concept sur ma propre base de code entre les deux référentiels et il a très bien fonctionné (avec le sql de tir).
Mise à jour
Il semble que vous essayez deux requêtes distinctes avec une clause where-- je ne crois pas LINQ2Entities prend en charge ce que vous tentez de faire. Essayez de mettre à jour votre code de la manière suivante:
Où vous remplacez les deux à partir de/où "les requêtes avec un"/".
Quels types sont les variables _customer et _library? Cette erreur semble indiquer qu'ils sont déjà IQueryable<>. Si cela arrive à être le cas, essayez de la supprimer .Méthode Query() appels à partir de cette déclaration et d'essayer des choses.
_customer, _library est le référentiel de la clientèle et de la bibliothèque de la table. La Requête() retourne le DBSet objet. Veuillez trouver le générique du référentiel de code ci-dessous, public IDbSet<T> ProductDbSet { get { return _dbSet ?? (_dbSet = BaseDbContext.Set<T>());} } public IQueryable<T> Query() { IQueryable<T> query = ProductDbSet; la requête de retour; }
Mise à jour de répondre avec quelque chose que vous pouvez essayer...
Après la modification de la requête à utiliser "rejoindre", le code fonctionne bien. Pouvez-vous s'il vous plaît laissez-moi savoir plus sur ce qui est le problème lors de l'utilisation de " où " les requêtes?
OriginalL'auteur DanS