2010-11-25 14 views
1

J'ai une question concernant la duplication des propriétés dans les modèles de vue. Pour ma recherche Voir j'ai un viewmodel qui ressemble à ceciQuestion concernant les propriétés de duplication dans ViewModels

public class SearchModel 
{ 
    public IEnumerable<SelectListItem> Genders {get;set;} 
    ... other select lists 
    // Worker Details 
    public string FirstName {get;set;} 
    public string LastName {get;set;} 
    public DateTime Birthdate {get;set;} 
    public int Phone {get;set;}et 
    public string Gender {get; set;} 

    //Address Details 
    public string Street {get;set;} 
    public string City {get;set;} 
    public string Zip {get; set;} 


} 

Pour ma vue d'entrée j'ai le suivant Voir modèle

public IEnumerable<SelectListItem> Genders {get;set;} 
    public IEnumerable<SelectListItem> Directions {get;set;} 
    ... other select lists 
    // Worker Details 
    public string FirstName {get;set;} 
    public string LastName {get;set;} 
    public DateTime Birthdate {get;set;} 
    public int Phone {get;set;}et 
    public string Gender {get; set;} 

    public string SSN {get; set;} 
    public string DL {get;set;} 

    //Address Details 
    public int Number {get;set;} 
    public string Direction {get;set;} 
    public string Suffix {get;set;} 
    ..... 

    public string Street {get;set;} 
    public string City {get;set;} 
    public string Zip {get; set;} 
} 

Afficher Liste modèle

public class ListDisplayModel 
{ 
    public IEnumerable<Worker> Workers {get;set;} 

    internal class Worker 
    { 
     public string FirstName {get;set;} 
     public string LastName {get;set;} 
     public DateTime Birthdate {get;set;} 
     public int Phone {get;set;}et 
     public string Gender {get; set;} 

     public string SSN {get; set;} 
     public string DL {get;set;} 

     //Address Details 
     public int Number {get;set;} 
     public string Direction {get;set;} 
     public string Suffix {get;set;} 
     public string Street {get;set;} 
     public string City {get;set;} 
     public string Zip {get; set;} 
    } 
} 

Je me sens comme Je duplique beaucoup de propriétés. Je me demandais si ce serait idéal pour moi d'aller de l'avant et de créer comme une classe DTO appelée travailleur et de le placer dans chacune de ces classes de modèles de vue ou y a-t-il une meilleure façon de faire quelque chose comme ça?

Merci

Répondre

2

je partirais avec le WorkerViewModel dans chaque ViewModel comme vous l'avez suggéré d'améliorer le code et réduire les doubles emplois.

+0

D'accord, l'utilisation d'un DTO est parfaitement logique ici. –

+0

J'ai oublié de mentionner que j'ai une entité EF appelée travailleur déjà. Serait-il encore mieux pour moi de créer une classe dto ou devrais-je simplement utiliser la classe EF à la place? – zSynopsis

1

Créer de manière abstraite une classe de travail et placer ces propriétés dans l'objet.