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?

questionAnswers(3)

yourAnswerToTheQuestion