2010-10-07 11 views
5

Sono bloccato qui.Mappatura di dati da 2 tabelle a 1 entità - Entity Framework 4

E 'possibile mappare i dati da 2 tabelle diverse a 1 soggetto in Entity Framework 4.

Ho un sacco di dipendenti in una tabella, e nell'altra ho informazioni di progetto som. Vorrei combinare queste due tabelle in un'entità e mantenere le funzioni di tracciamento ecc. È possibile?

Non voglio utilizzare una funzione di importazione, ma solo attraverso il Modello entità.

Chiunque può aiutare - quando provo a farlo, ottengo il seguente errore per tutto il tempo:

Errore 3024: Problema in frammenti di mappatura partire dalla riga 2354: necessario specificare la mappatura di tutte le proprietà fondamentali (MyProjectTable. PSInitials, MyProjectTable.ProjectID) di EntitySet MyProjectTable.

Entrambe le chiavi sono mappate alle rispettive tabelle. La nuova entità viene creata con MyProjectTable come base.

La relazione tra i 2 tavoli è un 1- *

spera che possiate aiutare.

/Christian

+0

AFAIK non puoi farlo. Se possono essere combinati in 1 entità, perché non possono essere combinati in una tabella? O un'altra opzione - lasciateli come 2 entità - e "proiettateli" in 1 entità (ad es. POCO speciale) – RPM1984

+0

Hmmm - trovate questo articolo - http://blogs.msdn.com/b/simonince/archive/2009/03 /23/mapping-two-tables-to-one-entity-in-the-entity-framework.aspx - e apparentemente questo può essere fatto su una relazione 1-1. Tuttavia, fare lo stesso su una relazione 1- * fornisce il seguente errore: Errore 3024: problema nella mappatura dei frammenti che iniziano alla riga 2009: deve specificare il mapping per tutte le proprietà chiave (MyProjectTable.PSInitials, MyProjectTable.ProjectID) di EntitySet MyProjectTable . Eventuali suggerimenti ???? –

+0

Se è 1- *, allora perché vuoi una singola entità? Non ha molto senso. –

risposta

5

Non è possibile mappare due tabelle con una relazione uno-a-molti a un'unica entità. Se non vuoi proiettare i risultati in un oggetto nel codice, considera la possibilità di creare una vista e mapparla.

Secondo 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

I motivi per fare questo sono abbastanza semplice - per esempio, una tabella di punti di dati che tutti hanno uno dei cinque 'tipi'. Ovviamente il 'tipo' sarà una tabella separata per motivi di normalizzazione, ma da un punto di vista applicativo (lavorando con i dati) ha più senso avere tutte le proprietà in una singola entità.

Quindi non possiamo farlo con Entity Framework, un supposto Object-Relational-Mapper. Che cosa, allora, è il punto di utilizzare un tale quadro?

+0

Penso che l'argomento sarebbe che questo viene fatto più efficacemente come una vista dal database piuttosto che creare entità che fungono da viste. Stavo tentando di fare la stessa cosa anch'io ... lo sono ancora. Dato che sono un ragazzo di codice e non ho alcun controllo sul database, sarebbe utile per me essere in grado di fornire queste entità in questo modo senza dover manipolare l'archivio dati ... ma capisco la logica per NON farlo. –

Problemi correlati