Por que a estrutura da entidade precisa de uma ICollection para carregamento lento?
Quero escrever uma classe de domínio rica, como
public class Product
{
public IEnumerable<Photo> Photos {get; private set;}
public void AddPhoto(){...}
public void RemovePhoto(){...}
}
Mas a estrutura da entidade (primeira abordagem do código V4) requer um tipo de ICollection para carregamento lento! O código acima não funciona mais como projetado, pois os clientes podem ignorar o método AddPhoto / RemovePhoto e chamar diretamente o método add no ICollection. Isto não é bom.
public class Product
{
public ICollection<Photo> Photos {get; private set;} //Bad
public void AddPhoto(){...}
public void RemovePhoto(){...}
}
Está ficando realmente frustrante tentar implementar o DDD com o EF4. Por que eles escolheram a ICollection para carregamento lento?
Como posso superar isso? O NHibernate me oferece uma melhor experiência com DDD?