2011-10-21 16 views
5

Đối với mỗi thực thể có quan hệ một đến nhiều với thực thể khác khi tôi cố gắng thêm mục mới, có vẻ như tôi phải xác định danh sách các mục có liên quan đến thực thể này. Ví dụ, cho phép nói rằng tôi có một thực thể ProductType mà có một danh sách các Products như sau:Làm cách nào để xác định Nullable EntitySet <>?

[Table] 
public class ProductType 
{ 
    [Column(IsPrimaryKey = true, IsDbGenerated = true)] 
    public int Id { get; private set; } 
    [Column] 
    public string Name { get; set; } 

    private EntitySet<Product> _products; 
    [Association(Storage = "_products", ThisKey = "Id", OtherKey = "ProductTypeId")] 
    public EntitySet<Product> Products 
    { 
     get { return _products; } 
     set { _products.Assign(value); } 
    } 
} 

khi tôi cố gắng thêm một mới ProductType như thế:

ProductType newType = new ProductType { Name = "newType" }; 
_productRepository.Add(newType);  //InsertOnSubmit() and SaveChanges() 

nó mang lại cho tôi một ngoại lệ rằng Products là null:

Object reference not set to an instance of an object 

cùng một vấn đề với tất cả các thực thể có từ một đến nhiều phấn khởi với các thực thể khác. vì vậy làm thế nào tôi có thể cho phép null cho EntitySet <> đại diện cho một đến nhiều Quan hệ

Trả lời

3

Bạn đang thiếu cài đặt hàm tạo đã tạo mặc định cho bộ thực thể Sản phẩm. So sánh điều này với những gì nhà thiết kế tạo ra cho bạn. Ví dụ, các nhà xây dựng sản phẩm cho Northwind trông như thế này:

public Product() 
    { 
     this._Order_Details = new EntitySet<Order_Detail>(new Action<Order_Detail>(this.attach_Order_Details), new Action<Order_Detail>(this.detach_Order_Details)); 
     this._Category = default(EntityRef<Category>); 
     this._Supplier = default(EntityRef<Supplier>); 
     OnCreated(); 
    } 
+0

Cảm ơn, 1 cho việc sử dụng các nhà thiết kế để so sánh các ánh xạ của tôi, nó hoạt động tốt như thế này: 'this._products = new EntitySet ((đơn vị sản phẩm) => entity.ProductType = this, (Product entity) => entity.ProductType = null); ' –

+0

Rất vui được trợ giúp. Thông thường, cách tốt nhất để tìm hiểu cách thực hiện thủ công là xem những gì các nhà thiết kế tạo ra và sau đó mở rộng chúng từ đó. –