2011-10-21 18 views
5

Yeni bir öğe eklemeye çalıştığımda, diğer varlıkla bire çok ilişkisi olan her varlık için, bu öğeyle ilişkili öğeler listesini tanımlamak zorundayım gibi görünüyor.Nullable EntitySet <> nasıl tanımlayabilirim?

[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); } 
    } 
} 

i böyle yeni ProductType eklemeyi deneyin:

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

bana bir verir Örneğin i şöyle Products bir listesini içeren bir ProductType varlık olduğunu söylemek sağlar Products boş istisna olduğu:

Object reference not set to an instance of an object 

birçok r bir birine sahiptir tüm varlıklarla aynı sorun diğer varlıklar ile elation. böylece nasıl ben pek İlişkiler

cevap

3

bir tane Sen Ürünleri varlık kümesi için varsayılan ayar oluşturulan yapıcı kaçırıyorsun temsil EntitySet <> null izin verebilir. Bunu, tasarımcının sizin için ürettiği şeye kıyasla karşılaştırın. Örneğin, Northwind için Ürün yapıcısı şuna benzer:) `this._products = new EntitySet ((Ürün varlık: my eşleştirmeleri karşılaştırmak için tasarımcı kullanmak için

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

sayesinde 1, böyle çalışıyor => entity.ProductType = this, (Product entity) => entity.ProductType = null); –

+0

Yardımlardan memnun oldum. Çoğu zaman, el ile yapılmasının nasıl yapıldığını öğrenmenin en iyi yolu, tasarımcıların neler ürettiğini ve onlardan oradan ne kadar genişlediğini görmektir. –