2011-06-22 8 views
7

Al crear primeras colecciones de código, puede implementar una clase personalizada que implemente ICollection. El código siguiente no es conceptualPrimer código de EF Colecciones personalizadas

public class Product 
{ 
    public int ProductId { get; set; } 
    public string Name { get; set; } 
    public Category Category { get; set; } 
} 

public class Category 
{ 
    public int CategoryId { get; set; } 
    public string Name { get; set; } 
    //Want to Avoid This 
    public ICollection<Product> Products { get; set; } 
    //Use his instead of above 
    public ProductList ProductsInCategory {get;set;} 
} 
public class ProductsList :ICollection<Product> 
{ 
    public int DiscontinuedProductsCount 
    { 
     return internalList.Count(); 
    } 
    //Icollection Methods Excluded 
} 
+0

¿Lo intentó? –

Respuesta

7

EF puede soportar cualquier colección que herede de ICollection. Creamos una colección eliminable para admitir eliminaciones automáticas y también creamos colecciones para objetos secundarios para mantener el tamaño de nuestro objeto principal más pequeño.

+1

También hay un gran problema. La colección que cree debe tener un constructor vacío predeterminado. Estábamos tratando de pasarle un Id al constructor y esto fue muy mal. Odio que ICollection exponga Add(). Restringe totalmente el diseño de DDD. – ScottReynolds

+0

Puede hacer que la propiedad ICollection se correlacione con EF interna y exponer un adaptador público que agrega un comportamiento personalizado y no proporciona Add(). – Guillaume

Cuestiones relacionadas