J'ai un problème avec l'héritage TPT + la clé étrangère. Je travaille sur une application Web avec prise en charge multilingue, y compris la traduction de contenu dynamique. Voilà mes tableaux:Problème de clé TPT et de clé étrangère
Language
=============
Id, Name
ProcessingAgent
====================
Id, some other fields
LocalizedProcessingAgent
=========================================================
LocalizedProcessingAgentId, Name, Description, LanguageId
Comme vous l'aurez deviné déjà, je me suis déplacé les colonnes qui doivent être traduites ProcessingAgent
-LocalizedProcessingAgent
. Du côté EF, j'ai fait un héritage TPT, donc ProcessingAgent
est une classe de base de LocalizedProcessingAgent
. Je suis nouveau à EF, c'est mon premier projet sur lequel j'ai évolué et l'un de ses comportements étranges me trouble vraiment. Lorsque je génère des classes EF à partir de la base de données, LocalizedProcessingAgent
possède un langage de propriétés de navigation (en raison de LanguageId
). Le problème est que Language
propriété est null après que j'Interrogation de la db:
LocalizedProcessingAgentRecord l = db.ProcessingAgents
.OfType<LocalizedProcessingAgentRecord>().First(p => p.Id == 1);
//l.Language is null
La clé étrangère est la navigation pas rempli pour une raison quelconque, je ne sais pas pourquoi. Cela se produit uniquement lorsque je interroge des entités dérivées, dans ce cas LocalizedProcessingAgentRecord
. Des idées?
ici est EF balisage XML: http://dl.dropbox.com/u/3055964/ef.xml
damn, devrais-je faire la même chose pour chaque requête? Y a-t-il un meilleur moyen d'accomplir cela? :( – Davita
Si vous utilisez v4.0 ef vous pouvez activer paresseux chargement ctx.ContextOptions.LazyLoadingEnable = true En v1.0 ef il n'y a pas de chargement paresseux transparent, mais vous pouvez faire explicitement le chargement paresseux comme ceci:. si (! agent.Language.IsLoaded) agent.Language.Load(); –
Merci yury, votre réponse a été vraiment utile – Davita