2011-11-07 3 views
0

j'ai les objets tables de base de données suivante/EFCréation d'objets avec des objets connexes dans Entity Framework 4.1

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

} 

public class TransactionItems 
{ 
    //some properties 
} 

Ce que je dois faire est, créer une nouvelle instance de transaction ainsi que plusieurs instances de TransactionItems pour ses articles biens et sauver tous ces à mon DB

J'ai essayé ce qui suit:

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

Puis, dans une boucle foreach Je Boucler dans une collection et creatin g un nouveau TransactionItem pour chaque membre et de tenter de l'ajouter sur l'objet trans Item Collection

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... 

} 

Je reçois une exception de référence null lorsque je tente d'ajouter un transactionITem à la collection d'objet de mon objet de transaction. Qu'est-ce que je fais mal?

Répondre

2

Vous devez initialiser la propriété de tenir une instance de collection dans le constructeur:

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

Si vous définissez cette façon que votre attention '' Equals' et les opérateurs GetHashCode' prennent spécifiquement les clés primaires/uniques propriétés de contrainte en considération, et pas d'autres propriétés. –

+1

@ MerlynMorgan-Graham: Ou utilisez simplement l'égalité de référence. – SLaks

1

Avez-vous jamais Initialiser TransactionItems dans le constructeur pour Transaction ou dans votre code actuel?

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

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

ou moins de préférence (à moins que vous accomplissiez ci-dessus):

Transaction trans = new Transaction() 
{ 
    Items = myCollection.Select(
     item => new TransactionItem 
     { 
      // set its properties 
     }) 
     .ToList(); 
}; 
Questions connexes