2010-07-26 10 views
9

mogę map 1: 1 (jeden do jednego) tabelach intuicyjnie, tak:Podmioty stowarzyszenie mapowanie ramowa między widzenia i stół

Ale nie mogę zrozumieć, jak zrobić to samo mapowanie pomiędzy stolik i widok, jak to

W tym schemacie oba podmioty są reprezentowane. Gdybym ręcznie utworzyć stowarzyszenie w modelu encji i skonfigurować swojego odwzorowania takiego:

Potem pojawia się błąd:

Error 3021: Problem in Mapping Fragment starting at line 172: Each of the following columns in table view_EmployeeView is mapped to multiple conceptual side properties: view_EmployeeView.EmployeeID is mapped to Employeesview_EmployeeView.Employees.id, Employeesview_EmployeeView.view_EmployeeView.EmployeeID

Dlaczego miałbym nie dostać ten błąd z Stowarzyszenie na stół? Jak rozwiązać ten problem? Chciałbym umieścić niektóre obliczenia informacji w widoku, ale wyraźnie dołącz do niego, gdy jest to potrzebne z funkcją .Include().

Odpowiedz

5

Aby odwzorować powiązanie między dwiema jednostkami, klucz obcy nie może być również kluczem podstawowym.

To, co naprawdę masz tutaj, to dziedziczenie TPT. Masz klasę "podstawową" i opcjonalne dodatkowe właściwości w drugiej tabeli (lub widoku).

oglądać ten film: http://msdn.microsoft.com/en-us/data/cc765425.aspx

Dokonać „Widok” podmiot dziedziczyć z jednostki pracownika. Usuń właściwość EmployeeID z encji widoku. Mapuj kolumnę EmployeeID właściwości View to ID głównego pracownika. Otrzymasz jeden ObjectSet w swoim ObjectContext dla tej hierarchii.

+0

Dobrze, to sprawdza poprawność modelu i widzę mój podmiot w klasie usługi domeny, ale nie mówi o tym definicji.ObjectContext.MyClass, więc nie mogłem znaleźć sposobu, aby to zarządzać dla SL i dla widoku. Klasa projektanta wygląda tak samo jak inne jednostki z wyjątkiem dziedziczenia z BaseClass zamiast z Entity ... Year 2014 :) –