2009-11-20 28 views
7

Tengo una base de datos con una tabla para pedidos activos y otra para pedidos inactivos. Me gustaría modelar esto en Entity Framework como una entidad llamada Orders. También necesito una forma de determinar si un pedido en esta colección está activo o no, preferiblemente al tener una propiedad de estado en la entidad que se establece de acuerdo con la tabla en la que se encuentra. ¿Hay alguna forma de hacerlo utilizando Entity Framework 1. Qué sobre en Entity Framework 4?Entity Framework asigna múltiples tablas a una entidad

Respuesta

5

Eche un vistazo a la herencia Table Per Concrete Type.
Se describe here en ADO.NET Team Blog.

+0

Esto no parece ser lo que necesito. En ese ejemplo, crearon una entidad separada de Productos discontinuados. Quiero usar una entidad Order pero tengo que contener los datos de dos tablas diferentes. –

+0

Pruebe el enfoque DefiningQuery. Escriba DefiningQuery con UNION y agregue una columna de expresión que devuelva el tipo de orden. Asegúrese de que los tipos de teclas principales coincidan. En caso de que necesite una oportunidad para modificar las entidades, escriba las funciones de modificación necesarias. Para esto, puede usar CommandText o escribir los procedimientos en su DB. – Devart

0

Si entiendo que tanto las órdenes activas como las inactivas compartirían las mismas propiedades (por ejemplo: ambas tendrían una propiedad de "cantidad" decimal) si este es el caso, entonces en EF 1, estoy bastante seguro de que esto es imposible. Creo que tendrá que recurrir a Mapear sus entidades a un objeto Pedidos de POCO.

1

Creo que esto es lo que busca: How to: Define a Model with Multiple Entity Sets per Type (Entity Framework)

"El modelo de datos Entidad (EDM) permite un tipo de entidad que se incluirán por entidad de múltiples conjuntos dentro de un único contenedor entidad o para un tipo de entidad que se incluido en conjuntos de entidades en contenedores de múltiples entidades. La definición de conjuntos de entidades múltiples por tipo (MEST) permite a los usuarios racionalizar su código cuando las bases de datos tienen particiones u otros escenarios en los que múltiples tablas tienen la misma estructura ".

+0

Vi este artículo antes. Sin embargo, esto no cubre lo que necesito. Aunque la entidad del Cliente contiene datos de la tabla CustomerWest y CustomerEast, no puede volver más tarde y mirar a un cliente y determinar su región. En mi caso, necesito una forma de ver una orden y decir si está activa o no. –

6

Puede crear una vista en su base de datos y generar la entidad a partir de eso.

0

Una buena forma de hacer una entidad que comparte varias tablas es usar División de entidades. MSDN tiene un tutorial muy simple que lo guiará a través del proceso, que es muy fácil, sin embargo, es posible que deba reformar su modelo de datos: http://msdn.microsoft.com/en-us/data/jj715646.aspx

Cuestiones relacionadas