DTOs no WCF RIA Services Mestre-Detalhe
-
12-11-2019 - |
Pergunta
Eu tenho que fazer um Mestre-Detalhe do cenário onde o mestre que eu possa mostrar muitos tipos de itens, que todos eles implementam IDto
:
interface IDto
{
int Id { get; set; }
string Title { get; set; }
EntityType { get; set;
}
enum EntityType
{
Contact,
Person,
Company,
Customer
Employee,
Vendor,
Job
}
Nota:Eu estou usando o Entity Framework EDM (gerado ObjectContext
e EntityObject
s).
A hierarquia de classes é que Contact
é a subclasse de Person
e Company
, Person
é a classe base de Employee
, Company
é a classe base de Vendor
. Customer
tem uma propriedade Contact
que pode ser um Contact
ou um Person
, e tem uma lista de Job
.
Agora na lista mestre, eu quero carregar uma coleção de DTOs do DomainService
(é uma LinqToEntitiesDomainService<ObjectContext>
, e eu quero apenas os campos especificados no IDto
contrato para ser selecionado, em seguida, quando selecionada, coloque a entidade inteira, com todos os seus campos/dados relacionados etc.na área de detalhes.
Atualização:Pensei em outra idéia.
Criar um banco de dados visualização (SQL2008) que retorna a 3 linhas de acima IDto
contrato onde o enum será armazenado como int ou tinyint (irá, em seguida, alterar o enum para byte) e, em seguida, no edm, eu posso fazer uma tabela por hierarquia para cada EntityType armazenados na lista, e devolvê-lo a partir do DomainService
.
BTW, todos os valores enum será usada para a consulta, na verdade, nenhuma entidade vai voltar Contact
para a sua EntityType
propriedade, porque Contact
é abstrato e pode ser um Person
ou um Company
, mas eu ainda quero ter uma opção para consulta de ambos.
Atualização 2
O cliente também quer, para cada um dos itens na lista, também todos os seus trabalhos.
Com base na hierarquia descrevi acima, para um Customer
- selecione todos os seus trabalhos;para um Contact
ou um Person
- escolha a sua Customer
's Job
s (se o seu Customer
). Vendor
ou Employee
s não são feitos para ser o registro com Job
s.
Eu acho que a única forma de fazer isso é com banco de dados-modos de exibição.
Estou errado?Quais são as consequências?Eu estou usando SL5 com a RIA.
É a Vista de maneira bem?Ou eu deveria lidar com todas as consultas em que o cliente utilizar um cliente POCO?porque realmente esse valor só são usados para recuperar o nome do contato e os seus postos de trabalho.mais detalhes e manipulação será feito em outros pontos de vista sobre o Entity
entidades que eles mesmos.
Então, o que você especialistas acham?
Solução
Eu encontrei este post muito útil, e é, na verdade, deixe-me um desicion.
- Exibições de banco de dados não é necessariamente a melhor abordagem
- Vai voltar a parcial entidades através POCO DTOs do serviço de domínio.