Domanda

Sono nuovo di ASP.NET MVC, IoC, POCO, ecc. Quindi voglio sapere è OK usare questo tipo di architettura.

Questo è il mio progetto demo.

Project.Core ( questo assembly a cui fa riferimento tutto il progetto )

public class User
{
   public string Name {get; set;}
   public List<UserGroup> UserGroups{get; set}
}
public class UserGroup
{
   public string Title{get; set;}
}
public interface IUserService 
{
   User GetById(int id);
}
public interface IUserGroupService 
{
   List<UserGroup> GetByUser(User user);
}

Sembra buono, ma come posso usare il caricamento lento in questo modo? Non voglio ottenere Gruppi utenti ogni volta che ottengo Utente .

La mia idea è di modificare la mia classe Utente in questo modo:

public class User
{
   public string Name {get; set;}
   public List<UserGroup> UserGroups
   {
       get { return _groups ?? (_groups = Services.UserGroupService.GetByUser(this)); }
       set { _group = value;}
   }
}

public class Services
{
    // this class populates some kind with Unity
    public static IUserGroupService UserGroupService {get; set;}
}

Qual è lo svantaggio della mia soluzione? Non mi piace che il mio oggetto POCO usi l'istanza IUserGroupService .

È stato utile?

Soluzione

  

Non voglio ottenere Gruppi utenti ogni volta che ottengo Utente.

Quindi non collegarli nel modello a oggetti. Diventa complesso velocemente, più inizi a farlo.

Se lo stai facendo per consegnare una singola istanza alle viste, puoi avere un modello di visualizzazione con il set di informazioni di cui hai bisogno.

Prestare attenzione se si finisce costantemente per richiedere all'utente una serie di informazioni correlate, che potrebbero indicare un modo alternativo per caricare tutti quei dati correlati. E poi sarai in grado di decidere se desideri caricarlo con impazienza e salvare quei viaggi di andata e ritorno extra che non fanno nulla di buono.

Altri suggerimenti

Dai un'occhiata all'utilizzo degli intercettori qui . Puoi mantenere i tuoi oggetti puliti e fare tutte le inizializzazioni all'interno delle fabbriche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top