2011-11-07 143 views
0

我有以下的數據庫表/ EF對象與實體框架的相關對象創建對象4.1

public class Transaction 
{ 
    //some other properties 
    public ICollection<TransactionItems> Items {get; set;} 

} 

public class TransactionItems 
{ 
    //some properties 
} 

,我需要做的是,用TransactionItems其項目的多個實例一起創建事務的一個新實例財產和所有這些保存到我的DB

我曾嘗試以下:

Transaction trans = new Transaction(); 
//set its properties 

然後在foreach循環中,我循環通過收集和肌酸g下每個成員的新TransactionItem,並試圖將其添加到跨對象項目集合

foreach(var item in myCollection) 
{ 

    TransactionItem newItem = new TransactionItem(); 
    //set its properties 

    //add it to the tran Item collection 
    tran.TransactionItems.Add(newItem);//getting null reference here... 

} 

我得到一個空引用異常,當我嘗試將transactionITem添加到我的交易對象的項目集合。我究竟做錯了什麼?

回答

2

需要初始化保持在構造一個集合實例的屬性:

Items = new HashSet<TransactionItems>(); 
+0

如果你把它定義這種方式要小心,你的'Equals'和'GetHashCode'運營商具體採取的主鍵/唯一約束屬性,而不是其他屬性。 –

+1

@ MerlynMorgan-Graham:或者只是使用引用相等。 – SLaks

1

你有沒有初始化在構造函數中TransactionItemsTransaction或在您的實際代碼?

public class Transaction 
{ 
    public Transaction() 
    { 
     Items = new List<TransactionItems>(); 
    } 

    //some other properties 
    public ICollection<TransactionItems> Items {get; set;} 
} 

或者更少preferrably(除非你也做了以上):

Transaction trans = new Transaction() 
{ 
    Items = myCollection.Select(
     item => new TransactionItem 
     { 
      // set its properties 
     }) 
     .ToList(); 
}; 
相關問題