2010-10-07 7 views
5

Utknąłem tutaj.Mapowanie danych z 2 tabel do 1 encji - Entity Framework 4

Czy można mapować dane z 2 różnych tabel do 1 podmiot w Entity Framework 4.

Mam grono pracowników w jednej tabeli, aw drugiej mam informacji o projekcie som. Chciałbym połączyć te 2 tabele w jedną encję i zachować funkcje śledzenia itp., Czy to możliwe?

Nie chcę używać funkcji importu, ale robię to wyłącznie za pomocą Modelu jednostki.

może ktoś pomóc - gdy próbuję to zrobić, pojawia się następujący błąd cały czas:

Error 3024: Problem z fragmentami mapowania zaczynając od linii 2354: Należy określić odwzorowanie dla wszystkich najważniejszych właściwości (MyProjectTable. PSInitials, MyProjectTable.ProjectID) obiektu EntitySet MyProjectTable.

Oba klucze są przypisane do odpowiednich tabel. Nowa jednostka jest wykonana z MyProjectTable jako basetable.

Relacja między 2 tabel jest 1- *

Spodziewać się można pomóc.

/Christian

+0

AFAIK Nie możesz tego zrobić. Jeśli można je połączyć w jeden podmiot, dlaczego nie można ich połączyć w jedną tabelę? Lub inna opcja - po prostu zostaw je jako 2 jednostki - i "projektuj" je w jedną całość (tj. Specjalne POCO) – RPM1984

+0

Hmmm - znaleziono ten artykuł - http://blogs.msdn.com/b/simonince/archive/2009/03 /23/mapping-two-tables-to-one-entity-in-the-entity-framework.aspx - i najwyraźniej można to zrobić w relacji 1-1. Ale robi to samo na relacji 1 * daje następujący błąd: Błąd 3024: Problem w odwzorowywaniu fragmentów od linii 2009: Należy określić mapowanie dla wszystkich kluczowych właściwości (MyProjectTable.PSInitials, MyProjectTable.ProjectID) EntitySet MyProjectTable . Wszelkie sugestie ???? –

+0

Jeśli jest to 1- *, to dlaczego chcesz mieć pojedynczy obiekt? To naprawdę nie ma sensu. –

Odpowiedz

5

Nie można mapować dwóch tabel z relacji jeden-do-wielu do jednego podmiotu. Jeśli nie chcesz rzutować wyników na jeden obiekt w kodzie, należy zamiast tego utworzyć widok i zmapować go.

Według 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

podać powody tego są dość proste - na przykład tabela punktów danych, które mają jedną z pięciu „typów”. Oczywiście "typ" będzie osobną tabelą w celu normalizacji, ale z punktu widzenia aplikacji (praca z danymi) bardziej sensowne jest posiadanie wszystkich właściwości w jednym obiekcie.

Więc nie możemy tego zrobić z Entity Framework - domniemanym relacyjnym mapowaniem obiektów. Jaki jest zatem sens stosowania takiego szkieletu?

+0

Myślę, że argumentem byłoby to, że jest to bardziej skutecznie zrobione jako widok z bazy danych niż tworzenie Jednostek, które działają jako widoki. Próbowałem zrobić to samo ... wciąż jestem. Ponieważ jestem facetem kodu i nie mam kontroli nad bazą danych, byłoby mi pomocne, aby móc dostarczać te obiekty w ten sposób, bez konieczności manipulowania magazynem danych ... ale rozumiem uzasadnienie tego, że NIE robię tego. –

Powiązane problemy