2010-05-30 5 views
2

Est-ce que EF 4 prennent en charge un à plusieurs unidirectionnelle associations, comme dans:Associations unidirectionnelles un-à-plusieurs dans Entity Framework 4?

public class Parent 
{ 
    public int Id { get; set; } 
    public string Something { get; set; } 
    public List<Child> AllMyChildren { get; set; } 
} 

public class Child 
{ 
    public int Id { get; set; } 
    public string Anotherthing { get; set; } 
    // I don't want a back-reference to the Parent! 
    // public int ParentId { get; set; } 
} 

Quand je tente de compiler mon projet avec une association entre parents et enfants où End2 Navigation est vide (parce que je décoché la End2 Navigation Propriété case à cocher dans la boîte de dialogue Ajouter une association), je reçois

Erreur 2027: aucun mappage spécifié pour le EntitySet/AssociationSet - Child suivant.

MISE À JOUR:

Et si je viens d'une liste ou d'un bien similaire sur parent plutôt que d'une liste? Ai-je besoin de créer un type d'emballage pour contenir la chaîne de sorte que je puisse également contenir une référence arrière à Parent?

+0

Pourquoi voudriez-vous pas une référence en arrière? Pourquoi cela vous dérange-t-il? That * est * le comportement par défaut pour EF, et je ne pense pas que vous pouvez le désactiver - une association est toujours une rue à double sens –

+0

@marc_s: L'enfant n'aura jamais besoin de référencer son parent et ne sera jamais déplacé d'un parent à l'autre. Du point de vue de l'objet métier, il n'est pas nécessaire de faire référence au parent ou de s'en préoccuper. Si j'ajoute une référence au parent, c'est simplement pour satisfaire les exigences du mécanisme de persistance. En fait, Child était une structure avec quelques propriétés simples avant que je devais le changer en classe pour satisfaire EF. –

+0

@Eric J: OK, d'un point de vue puriste, je comprends votre point de vue. Mais pourquoi combattre cela - soyez juste pragmatique et acceptez les façons dont votre cadre fonctionne et fonctionne selon ses lignes - pas contre. Vous allez vous épargner beaucoup de chagrin. –

Répondre