2011-06-22 5 views
7

Khi tạo mã bộ sưu tập đầu tiên, bạn có thể triển khai lớp tùy chỉnh triển khai ICollection. Mã bên dưới là khái niệm không thực tếMã EF Bộ sưu tập tùy chỉnh đầu tiên

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

Bạn đã thử chưa? –

Trả lời

7

EF thực sự có thể hỗ trợ bất kỳ bộ sưu tập nào được thừa kế từ ICollection. Chúng tôi tạo một bộ sưu tập có thể xóa để hỗ trợ xóa tự động và cũng tạo bộ sưu tập cho các đối tượng con để giữ kích thước của đối tượng chính nhỏ hơn.

+1

Theres cũng là một hình ảnh lớn. Bộ sưu tập bạn tạo phải có một hàm tạo rỗng mặc định. Chúng tôi đã cố gắng chuyển một Id tới nhà xây dựng và điều này rất tệ. Tôi ghét rằng ICollection phơi bày Add(). Nó hoàn toàn hạn chế thiết kế DDD. – ScottReynolds

+0

Bạn có thể tạo thuộc tính ICollection ánh xạ tới nội bộ EF và hiển thị bộ điều hợp công cộng thêm hành vi tùy chỉnh và không cung cấp Thêm(). – Guillaume