Cette question est liée à Ceci :
ma méthode de référentiel contient ce code: p> mon code HTML a ce code: p> @foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.applicantPosition.Applicant.name)
</td>
<td>
@Html.DisplayFor(modelItem => item.applicantPosition.Position.name)
</td>
5 Réponses :
N'utilisez généralement pas d'objet EF en vue, mais créez un objet POCO pour le modèle de vue et cartographier le résultat de la requête sur le modèle de vue. EF n'exécute pas la requête dans votre méthode de référentiel car la requête n'est pas exécutée au moment de la définition, mais uniquement lorsque vous essayez d'accéder aux données. Dans votre vue, vous utilisez la même requête plusieurs fois et cela n'est pas correct. P>
Si vous souhaitez accéder à la liste de l'objet renvoyé par votre méthode de référentiel, utilisez tolist code> p>
Solution rapide:
public IEnumerable<ApplicationPositionHistory> GetApplicationPositionHistories(int applicantId, int positionId) { return context.ApplicationsPositionHistory.Where(d => d.applicantPosition.ApplicantID == applicantId && d.applicantPosition.PositionID == positionId).Include(o => o.applicantPosition).ToList() ; }
Cette même erreur s'est produite pour moi lorsque j'ai réimprimé deux classes modèles similaires pour hériter d'une classe de base de modèle utilisant une structure de héritage TPH, où il y avait une relation unique à zéro ou une sur l'une des classes dérivées, et j'étais Utilisation de la charge désireuse dans le contrôleur pour ce modèle. D'après ce que je comprends, le chargement impatient n'est pas pris en charge dans ce cas, alors laissez tomber le .include (...) code> pour cette propriété dans le contrôleur et ajoute
.tolist () Code> à la fin de mes autres
.include (...) code> Les déclarations semblent avoir résolu le problème - merci.
Le problème réel Si vous êtes paresseux charger la référence de position de l'entité candidatePaper avant que la requête ne termine cette exécution. Si vous souhaitez conserver l'exécution différée sur ce scénario, vous pouvez charger la référence de position sur votre requête comme celle-ci: P>
inclure (o => o.applicantposition.select (a => a.position)); p>
et sur votre getApplicationPositionnésShistoires permet de retourner l'iSenumérable. p>
L'autre solution consiste à exécuter la requête sur la méthode GetApplicationPositionShistories appelant les méthodes Tolist () ou Toarrray () sur la requête. p>
Cette erreur se produit lorsqu'une nouvelle requête va être exécutée pendant que vous êtes à l'intérieur d'une autre requête. Considérez que vous avez quelque chose comme ceci à votre vue et dans votre modèle de périphérique, vous avez p> puis puis pour l'évaluation du périphérique.name It Nécessite de faire la requête sa marque et son modèle, il deviendra une requête interne à l'intérieur de la requête. La solution consiste donc à activer MutlipleAcTiverSultsUtsultsUltsultsultsultsultsultsUltsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsultsults, comme suit: P> <add name="MyDBContext" connectionString="Data Source=.;Initial Catalog=mydb;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
Avez-vous essayé d'ajouter multipléceptaiversultsettst = true; code> à votre chaîne de connexion? P>
J'utilisais le contexte.