Why does the entity framework need an ICollection for lazy loading?

前端 未结 3 1516
醉酒成梦
醉酒成梦 2020-12-01 11:56

I want to write a rich domain class such as

public class Product    
{    
   public IEnumerable Photos {get; private set;}    
   public void A         


        
3条回答
  •  春和景丽
    2020-12-01 12:41

    I think i found the solution...See here for more details: http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/47296641-0426-49c2-b048-bf890c6d6af2/

    Essentially you want to make the ICollection type protected and use this as the backing collection for the public IEnumerable

    public class Product
    {
    
       // This is a mapped property
       protected virtual ICollection _photos { get; set; }
    
       // This is an un-mapped property that just wraps _photos
       public IEnumerable Photos
       {
          get  { return _photos; }
       }
    
       public void AddPhoto(){...}
       public void RemovePhoto(){...}
    
    } 
    

    For lazy loading to work the type must implement ICollection and the access must be public or protected.

提交回复
热议问题