2010-10-07 3 views
5

Je suis coincé ici.Mappage de données de 2 tables à 1 entité - Entity Framework 4

Est-il possible de cartographier les données de 2 tables différentes à 1 entité dans Entity Framework 4.

J'ai un tas d'employés dans une table, et dans l'autre je som informations sur le projet. Je voudrais combiner ces 2 tables dans une Entité, et conserver les fonctions de suivi etc., est-ce possible?

Je ne souhaite pas utiliser une fonction d'importation, mais uniquement via le modèle d'entité.

Quelqu'un peut-il aider - lorsque je tente de le faire, je reçois l'erreur suivante tout le temps:

Erreur 3024: Problème de fragments de cartographie à partir de la ligne 2354: Il faut préciser la cartographie de toutes les propriétés clés (MyProjectTable. PSInitials, MyProjectTable.ProjectID) de l'EntitySet MyProjectTable.

Les deux clés sont mappées à leurs tables respectives. La nouvelle entité est créée avec MyProjectTable en tant que basetable.

La relation entre les 2 tables est un 1- *

Espoir vous pouvez aider.

/Christian

+0

AFAIK vous ne pouvez pas faire cela. Si elles peuvent être combinées en une entité, pourquoi ne peuvent-elles pas être combinées en une seule table? Ou une autre option - il suffit de les laisser comme 2 entités - et les «projeter» en 1 entité (c'est-à-dire POCO spécial) – RPM1984

+0

Hmmm - trouvé cet article - http://blogs.msdn.com/b/simonince/archive/2009/03 /23/mapping-two-tables-to-one-entity-in-the-entity-framework.aspx - et apparemment cela peut être fait sur une relation 1-1. Mais faire la même chose sur une relation 1- * donne l'erreur suivante: Erreur 3024: Problème dans le mappage des fragments à partir de la ligne 2009: Doit spécifier le mappage pour toutes les propriétés de clé (MyProjectTable.PSInitials, MyProjectTable.ProjectID) de EntitySet MyProjectTable . Des suggestions? –

+0

Si c'est 1- *, alors pourquoi voulez-vous une seule entité? Cela n'a pas vraiment de sens. –

Répondre

5

Vous ne pouvez pas mapper deux tables avec un à-plusieurs à une seule entité. Si vous ne souhaitez pas projeter les résultats dans un objet dans le code, envisagez de créer une vue et de la mapper à la place.

Selon http://msdn.microsoft.com/en-us/library/bb896233.aspx

You should only map an entity type to multiple tables if the following conditions are true:

  • The tables to which you are mapping share a common key.

  • The entity type that is being mapped has entries in each underlying table. In other words, the entity type represents data that has a one-to-one correspondence between the two
    tables; the entity type represents an inner join of the two tables.

1

Les raisons pour ce faire sont assez simples - par exemple, une table de points de données qui ont tous l'un des cinq « types ». Évidemment, le 'type' sera une table séparée pour la normalisation, mais du point de vue de l'application (travailler avec les données), il est plus logique d'avoir toutes les propriétés dans une seule entité. Nous ne pouvons donc pas faire cela avec Entity Framework - un supposé Object-Relational-Mapper. Quel est donc le point d'utiliser un tel cadre?

+0

Je pense que l'argument serait que cela est plus efficacement fait comme une vue de la base de données plutôt que de créer des entités qui agissent comme des vues. J'essayais de faire la même chose moi-même ... Je le suis toujours. Étant donné que je suis un type de code et que je n'ai aucun contrôle sur la base de données, il serait utile que je puisse fournir ces entités sans avoir à manipuler le magasin de données ... mais je comprends les raisons de NE PAS le faire. –

Questions connexes