2010-01-12 6 views
2

Lors de la définition d'une relation dans l'infrastructure 4 dans une relation 1-à-plusieurs à l'aide de classes POCO, pourquoi la relation doit-elle être définie au niveau de l'enfant. par exemple dire que nous avons une commande qui a beaucoup de produits. La relation dans le fichier de mappage pour le produit ressemblerait à ceci: -Entity Framework 4, définition de la relation

Relationship(e => e.Order) 
      .FromProperty(m => m.Product) 
      .HasConstraint((e, m) => e.Id == m.Id); 

n-mise en veille prolongée son défini dans le fichier de mappage au niveau des parents (ordre dans ce cas). avoir la relation définie chez le parent offre plus de flexibilité et de réutilisation.

Y at-il un moyen de le faire au niveau parent à la place dans EF4.

Répondre

1

Dans l'EF4 CTP2, ils ont des propriétés inverses. Ils sont mentionnés dans cette ADO.NET team blog post.

public ParentConfiguration() 
     { 
      Property(p => p.Id).IsIdentity(); 
      Property(p => p.FirstName).IsRequired(); 
      Property(p => p.LastName).IsRequired(); 

      //Register an inverse 
      Relationship(p => p.Children).FromProperty(c => c.Parents); 
     } 

Ce que cela signifie est que parent.Children = les enfants travailleront les mêmes que child.Parents.Add (parent).

Je n'ai pas vu un moyen de le faire exactement comme NHibernate où vous pouvez appliquer l'attribut \ meta data directement à la classe parente. Dans mon expérience de travail avec POCO "plaine vieux objets CLR" ils sont séparés du cadre ORM. Les relations sont définies par ObjectContext dans EF et sont gérées à partir de là.

+0

Votre code ne mettra PAS en place un tableau supplémentaire avec des mappages d'ID. Qu'est-ce qui vous fait penser que ça va? –

+0

J'ai mis à jour ma réponse pour essayer de le rendre plus clair. Alex si je suis loin s'il vous plaît faites le moi savoir. –

+0

Cool. Merci Jason. –

Questions connexes