2010-07-26 5 views
9

posso mappare 1: tabelle 1 (uno-a-uno) in modo intuitivo, in questo modo:Enti associazione mappatura quadro tra vista e tavolo

Ma non riesco a capire come fare la stessa mappatura tra un tavolo e una vista, simile

In questo diagramma le due entità sono rappresentate. Se creo manualmente un'associazione nel modello di entità, e impostare la sua mappatura in questo modo:

allora ottengo l'errore:

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

Perché dovrei non si ottiene questo errore con la associazione tabella-tabella? Come risolvo questo problema? Vorrei mettere alcune informazioni calcolate in una vista, ma unirmi esplicitamente ad esso quando ho bisogno con la funzione .Include().

risposta

5

Per associare un'associazione tra due entità, la chiave esterna non può essere anche la chiave primaria.

Quello che hai qui è un'eredità TPT. Hai una classe "base", oltre a proprietà aggiuntive facoltative in una seconda tabella (o vista).

Vedere questo video: http://msdn.microsoft.com/en-us/data/cc765425.aspx

Fai l'entità "vista" eredita dall'entità Employee. Rimuovere la proprietà EmployeeID dall'entità di visualizzazione. Mappare la colonna EmployeeID della vista sulla proprietà ID del dipendente di base. Otterrai un singolo ObjectSet nel tuo ObjectContext per questa gerarchia.

+0

Buono, convalida il modello e posso vedere la mia entità in una classe di servizio di dominio ma non dice alcuna definizione per questo.ObjectContext.MyClass, quindi non sono riuscito a trovare un modo per gestirlo per SL e per una vista. La classe del designer appare come le altre entità tranne che eredita da BaseClass invece di Entity ... Anno 2014 :) –

Problemi correlati