J'ai une base de données avec ce tableau:Entité-Framwork-4 - l'accès à la propriété clé étrangère lorsque le contexte est parti en vue ASP.NET MVC2
Customer
- ID
- Phone
- Cell
- Fax
PhoneList
- ID
- PrefixID
- Number
Prefix
- ID
- Number
Il y a un FK entre le client chaque colonne de téléphone à PhoneList ID (et un autre de prefixID à ID sur le préfixe de table)
J'ai importé la base de données dans le fichier edmx en utilisant VS2010. J'ai obtenu des propriétés PhoneList, PhoneList1, PhoneList2 - généré (Q1: comment je change cela à d'autres noms?) Dans une bibliothèque de classe modèle ASP.NET MVC-je obtenir la liste des clients en utilisant:
clients var = de c en contexte. Les clients sélectionnent c;
et envoyer le résultat au contrôleur:
customersTable.AsQueryable de retour(); Le problème: je peux accéder à toutes les propriétés habituelles du client dans la vue, mais une fois que j'accède à PhoneList (généré automatiquement qui représente l'objet numéro de téléphone), j'obtiens cette erreur, car le contexte a disparu depuis longtemps et s'est fermé. côté modèle:
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
Q2: Comment dois-je faire face à cette situation - Comment puis-je assurer que les données que j'ai besoin « Stays »/Retreived de la base de données (et de l'autre côté, un autre FK que je don pas besoin d'être chargé - ne pas être chargé)
(Q2- est la "vraie" question, réponse o n Q1 sera apprécié ...)
Je travaille avec ASP.NET MVC2, EF-4
Merci.
q. Viewmodels doit définir Dans le projet d'interface utilisateur, lorsque je peuplais le viewmodel, ne serais-je pas confronté au même problème?Si je comprends bien la 2ème partie de votre réponse, est-ce que je devrais créer une classe de modèle à chaque classe d'EF et la remplir et la passer au lieu de la classe générée automatiquement et ces classes seront les sous-ensembles de mes viewmodels? N'est-ce pas un "gâchis" du modèle généré automatiquement par EF? – Dani
@Dani, oui les modèles de vue doivent être définis dans le projet d'interface utilisateur car ils sont liés à une vue. Vous devez créer un modèle de vue spécifique aux besoins de la vue et transmettre ce modèle de vue à la place de la classe EF. Et non ce n'est pas une perte de classes de modèles générés automatiquement. –
@Darin, Pour être sûr de bien comprendre - j'ai besoin de définir une classe de modèle dans le projet modèle, la remplir avec les données de la classe Auto-Generated que je reçois de linq, envoyer cette classe à l'interface utilisateur et là je vais mettre à l'intérieur d'une vue-modèle qui sert mes besoins de vue. donc j'ai une classe de client de l'edmx, une classe de client que j'ai créée manuellement dans le projet de modèle, et alors j'aurai la dernière classe à l'intérieur du viewmodel pour cette vue spécifique. Est-ce la bonne façon d'y aller? – Dani