Я хочу написать богатый класс домена, например
public class Product
{
public IEnumerable<Photo> Photos {get; private set;}
public void AddPhoto(){...}
public void RemovePhoto(){...}
}
Но инфраструктура сущности (первый подход V4-кода) требует типа ICollection для ленивой загрузки! Вышеприведенный код больше не работает так, как было разработано, так как клиенты могут обойти метод AddPhoto/RemovePhoto и напрямую вызвать метод add на ICollection. Это не хорошо.
public class Product
{
public ICollection<Photo> Photos {get; private set;} //Bad
public void AddPhoto(){...}
public void RemovePhoto(){...}
}
Это действительно разочаровывает попытку реализовать DDD с EF4. Почему они выбрали ICollection для ленивой загрузки?
Как я могу это преодолеть? NHibernate предлагает мне лучший опыт DDD?