Pregunta

Tengo que crear un escenario Maestro-Detalle donde en el maestro puedo mostrar muchos tipos de elementos, que todos implementan. IDto:

interface IDto
{
  int Id { get; set; }
  string Title { get; set; }
  EntityType { get; set;
}

enum EntityType
{
  Contact,
  Person,
  Company,
  Customer
  Employee,
  Vendor,
  Job  
}

Nota:Estoy usando Entity Framework EDM (generado ObjectContext y EntityObjects).

La jerarquía de clases es que Contact es la subclase para Person y Company, Person es la clase base de Employee, Company es la clase base de Vendor. Customer tiene una propiedad Contact eso puede ser un Contact o un Person, y tiene una lista de Job.

enter image description here

Ahora, en la lista maestra, quiero cargar una colección de DTO del DomainService (es un LinqToEntitiesDomainService<ObjectContext>, y solo quiero los campos especificados en el IDto contrato que se va a seleccionar y luego, cuando se seleccione, cargar toda la entidad con todos sus campos/datos relacionados, etc.en el área de detalles.

Actualizar:Pensé en otra idea.
Cree una vista de base de datos (SQL2008) que devuelva las 3 filas de lo anterior IDto contrato donde la enumeración se almacenará como int o tinyint (luego cambiará la enumeración a byte), luego en el edm puedo hacer una tabla por jerarquía para cada EntityType almacenado en la lista y devolverla desde el DomainService.

Por cierto, todos los valores de enumeración se utilizarán para la consulta; de hecho, ninguna entidad devolverá Contact por su EntityType propiedad, porque Contact es abstracto y puede ser un Person o un Company, pero aún quiero tener una opción para consultarlos a ambos.

Actualización 2
El cliente también quiere, para cada uno de los artículos de la lista, también todos sus trabajos.
Basado en la jerarquía que describí anteriormente, por un Customer - seleccionar todos sus trabajos;para Contact o un Person - seleccione su Customer's Jobs (si es un Customer). Vendor o Employees no están destinados a registrarse con Jobs.

Creo que la única forma en que puedo hacer esto es con vistas de bases de datos.
¿Me equivoco?¿Cuáles son las consecuencias?Estoy usando SL5 con RIA.

¿Las vistas son muy buenas?¿O debería manejar todas las consultas en el cliente utilizando un cliente POCO?porque en realidad este valor solo se usa para recuperar el nombre del contacto y sus trabajos.Se realizarán más detalles y manipulación en otras vistas del Entity entidades mismas.

Entonces, ¿qué opinan los expertos?

¿Fue útil?

Solución

He encontrado este publicación muy útil, y de hecho me permitió tomar una decisión.

  1. Las vistas de bases de datos no son necesariamente el enfoque correcto
  2. Devolverá las entidades parciales a través de POCO DTO desde el servicio de dominio.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top