2010-07-26 6 views
9

puedo mapear 1: tablas 1 (uno a uno) de manera intuitiva, así:Entidades asociación mapeo marco entre la vista y la tabla

Pero no puedo entender cómo hacer la misma asignación entre una mesa y una vista, como este

En este diagrama las dos entidades están representados. Si creo manualmente una asociación en el modelo de entidad, y levantaron sus mapeo:

Entonces me sale el error:

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

Por qué no iba a conseguir este error con el tabla de mesa de asociación? ¿Cómo resuelvo este problema? Me gustaría poner cierta información calculada en una vista, pero unirme explícitamente a ella cuando lo necesite con la función .Include().

Respuesta

5

Para asignar una asociación entre dos entidades, la clave externa tampoco puede ser la clave principal.

Lo que realmente tiene aquí es una herencia TPT. Tiene una clase "base", más propiedades adicionales opcionales en una segunda tabla (o vista).

vea este vídeo: http://msdn.microsoft.com/en-us/data/cc765425.aspx

Hacer la entidad "vista" heredan de la entidad Employee. Elimine la propiedad EmployeeID de la entidad de vista. Asigne la columna EmployeeID de la Vista a la propiedad ID del Empleado base. Obtendrá un único ObjectSet en su ObjectContext para esta jerarquía.

+0

Bueno, valida el modelo y puedo ver mi entidad en una clase de servicio de dominio pero dice que no hay definición para this.ObjectContext.MyClass, así que no pude encontrar una manera de administrar esto para SL y para una vista. La clase de diseñador se parece a las otras entidades, excepto que hereda de BaseClass en lugar de Entity ... Año 2014 :) –

Cuestiones relacionadas