2011-02-14 2 views
0

I ont les modèles suivantsEntity Framework 4.0, PoCo et Propriétés de navigation pour tables de consultation

DeltaDirectionType, 
int Id 
string Name 


Delta, 
int Id 
string Name 
DeltaDirectionType DeltaDirectionType 
Double Value 

Trade 
int Id 
DateTime BusinessDate 
IList<Delta> deltas 

Alors DeltaDirectionType est une table de consultation, le commerce détient une collection de deltas

Dans la base de données, il est mis en œuvre suit

DeltaDirectionTypes 
Id int 
Name varchar(max) 

Deltas 
Id int 
Name varchar(max) 
DeltaDirectionType_Id int 
Trade_Id int 
Value float 

Trades 
Id int 
BusinessDate DateTime 
Delta_Id int 

Quand je produis le modèle de code pour le fichier Edmx et (un vérifier les clés étrangères) comme mon modèle ne possède pas de propriétés pour ces derniers. J'ai un problème avec les propriétés de navigation. Quelque chose comme ceci dans nHibernate serait un simple un à plusieurs mappage pour DeltaDirectionType et Delta et beaucoup d'autres pour Delta et Trades cependant, comment puis-je d'abord comprendre que DeltaDirectionType est une recherche et deuxièmement obtenir l'Icollection pour travailler moi.

Je suis aux prises avec cela, Entity Framework ne le rend pas facile pour vous. J'ai essayé l'habituel, effacez la propriété de navigation qu'EF met pour vous d'un côté, mais alors vous obtenez quelques erreurs de mappage de fragments, propriétés non mappées etc.

Veuillez aider ou pointer dans la bonne direction.

Les tables de consultation sont des problèmes de la vie réelle, pas sûr pourquoi il est si difficile à mettre en œuvre EF.

Toute aide appréciée

Merci

+0

Selon ce que vous avez dit, Delta devrait avoir une propriété DeltaDirectionType et DeltaDirectionType aurait une collection d'objets Delta. Est-ce ce que vous obtenez? Je ne peux pas dire de votre description. Pourquoi avez-vous décoché la case Propriétés des clés étrangères? Ces valeurs peuvent être utiles ... –

Répondre

0

Qu'est-ce que vous voulez dire en fait par recherche? Est-ce que vous excepté que l'entité Delta aura DeltaDirectionType_Name directement mappé?

Dans EF, vous obtenez la propriété de navigation de DeltaDirectionType et vous pouvez accéder au nom via cette propriété de navigation. Si vous ne l'aimez pas, vous pouvez ajouter une nouvelle propriété à la classe partielle de votre produit POCO et fournir le nom directement dans l'entité Delta comme:

public string DeltaDirectionTypeName 
{ 
    get 
    { 
    return DeltaDirectionType != null? DeltaDirectionType.Name : String.Empty; 
    } 
} 

Le seul problème est que vous ne pouvez pas utiliser cette propriété dans LINQ -Questions sur les entités. Dans les requêtes, vous devez toujours utiliser les propriétés de navigation.

1

Vous devez créer des clés étrangères ou des propriétés de navigation dans le modèle pour naviguer dans la relation.

Les propriétés de navigation peuvent être définies comme unidirectionnelles, c'est-à-dire de la table des deltas vers la table de consultation. Une navigation unidirectionnelle comme celle-ci ajouterait la propriété appropriée à l'objet delta mais pas à la table looup

Questions connexes