Pourquoi ne entity framework besoin d'un ICollection pour le chargement paresseux?

Je veux écrire un domaine riche en classe comme

public class Product    
{    
   public IEnumerable<Photo> Photos {get; private set;}    
   public void AddPhoto(){...}    
   public void RemovePhoto(){...}
 }

Mais le cadre de l'entité (V4 première approche de code) nécessite une ICollection type de chargement paresseux! Le code ci-dessus ne fonctionne plus comme prévu puisque les clients peuvent contourner l'AddPhoto /RemovePhoto méthode d'appeler directement la méthode add sur ICollection. Ce n'est pas bon.

public class Product    
{    
   public ICollection<Photo> Photos {get; private set;} //Bad    
   public void AddPhoto(){...}    
   public void RemovePhoto(){...}    
 }

C'est vraiment frustrant d'essayer de mettre en œuvre DDD avec le EF4. Pourquoi ont-ils choisi la ICollection pour le chargement paresseux?

Comment puis-je surmonter cela? Ne NHibernate m'offrir une meilleure DDD expérience?

  • Essayer de comprendre moi-même. Je sais que le chemin à parcourir est comme vous l'avez décrit. Mais comment ? Il est également possible en EF 4.1 maintenant ? ou avez-vous trouvé une solution ?
InformationsquelleAutor | 2010-05-19