POCO objetos com o carregamento lento
-
22-07-2019 - |
Pergunta
I'am novo para ASP.NET MVC, IoC, POCO, etc. Então, eu quero saber é OK para usar esse tipo de arquitetura.
Este é o meu projeto de demonstração.
Project.Core ( este assembly referenciado por todos projeto )
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);
}
Parece bom, mas como eu posso usar o carregamento lento desta maneira? Eu não quero para obter Grupos cada vez I'am recebendo Usuário .
A minha ideia é modificar a minha Usuário classe desta maneira:
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;}
}
O que é desvantagem da minha solução? Eu não gosto que os meus POCO usos objeto IUserGroupService instância.
Solução
Eu não quero ficar Grupos cada vez I'am ficando usuário.
Então não amarrá-los juntos no modelo de objeto. Fica rápida complexa, mais você começar a fazer isso.
Se você está fazendo isso para entregar uma única instância para os pontos de vista, você pode ter um viewmodel com o conjunto de informações u precisa.
Preste atenção se você acabar constantemente necessitando o usuário com um conjunto de informações relacionadas, o que poderia apontar para um caminho alternativo para carregar todos os dados relacionados. E então você começa a ser capaz de decidir se você vai querer carga ansioso lo, e salvar aqueles roundtrips extras que não fazem nenhum bem.
Outras dicas
Tenha um olhar em usar interceptadores aqui . Você pode manter seus objetos limpo e fazer tudo a inicialização dentro das fábricas.