Domanda

Devo creare uno scenario Master-Detail in cui nel master posso mostrare molti tipi di elementi, che tutti implementano IDto:

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

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

Nota:Sto usando Entity Framework EDM (generato ObjectContext e EntityObjects).

La gerarchia di classe è che Contact è la sottoclasse per Person e Company, Person è la classe di base di Employee, Company è la classe di base di Vendor. Customer ha una proprietà Contact che può essere sia un Contact o un Person, e ha una lista di Job.

enter image description here

Ora nella lista principale, voglio caricare una raccolta di DTO dal DomainService (è un LinqToEntitiesDomainService<ObjectContext>, e voglio solo i campi specificati nel IDto contratto da selezionare, quindi, quando selezionato, caricare l'intera entità con tutti i suoi campi / dati correlati ecc.nell'area dettagli.

Aggiornare:Ho pensato a un'altra idea.
Creare una vista database (SQL2008) che restituisce le 3 righe di cui sopra IDto contratto in cui l'enum verrà memorizzato come int o tinyint (cambierà quindi l'enum in byte), quindi nell'edm posso creare una tabella per gerarchia per ogni EntityType memorizzato nell'elenco e restituirlo dal DomainService.

A proposito, tutti i valori enum verranno utilizzati per la query, infatti, nessuna entità restituirà Contact per la sua EntityType proprietà, perché Contact è astratto e può essere Person o un Company, ma voglio ancora avere un'opzione per interrogarli entrambi.

Aggiornamento 2
Il cliente vuole anche, per ciascuno degli articoli in lista, anche tutti i suoi lavori.
Sulla base della gerarchia che ho descritto sopra, per un Customer - seleziona tutti i suoi lavori;per un Contact o un Person - selezionare il suo Customerdi Jobs (se è a Customer). Vendor o Employees non sono destinati ad essere registrati con Jobs.

Penso che l'unico modo in cui posso farlo sia con le viste del database.
Mi sbaglio?Quali sono le conseguenze?Sto usando SL5 con RIA.

Le viste sono buone?O dovrei gestire tutte le query nel client usando un client POCO?perché in realtà questo valore viene utilizzato solo per recuperare il nome del contatto e i relativi processi.ulteriori dettagli e la manipolazione sarà fatto in altri punti di vista sul Entity entità loro stessi.

Cosa ne pensano gli esperti?

È stato utile?

Soluzione

Ho trovato questo post molto utile, e in realtà mi ha permesso di una desicion.

  1. Vista del database non è necessariamente l'approccio giusto
  2. Restituirà le entità parziali attraverso POCO DTO dal servizio di dominio.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top