2010-12-01 10 views
1

Excuses de poser une question connexe hier, mais après un peu de sommeil, j'ai simplifié ma question.framework d'entité - récupérer les ID créés par savechanges

Dans l'exemple ci-dessous, je parcours l'objet de la requête d'objet et j'ajoute des lignes à la table Positions. Après avoir ajouté toutes les nouvelles lignes et sauvegardé les modifications, les clés primaires (colonne d'identité entière) sont créées.

foreach (var row in sourcetable) 
     { 
      var newpos = new Positions() 
       { 
        Field1 = row.field, 
        Field2 = row.field2, 
        Field3 = row.field3 

       }; 

     } 

    Entities.savechanges 

Dans EF 3.5 est-il possible d'accéder à la liste de toutes les clés primaires ajoutées par le processus ci-dessus? Dites quelque chose de similaire à ce qui peut être fait en utilisant l'instruction de sortie dans T-sql.

Répondre

2

Bien sûr - ce que vous devez faire est accrocher à une liste de ces entités que vous êtes sur le point d'enregistrer, puis les inspecter après qu'ils ont été enregistrés:

List<Positions> _newItems = new List<Positions>(); 

foreach (var row in sourcetable) 
{ 
    var newpos = new Positions() 
    { 
     Field1 = row.field, 
     Field2 = row.field2, 
     Field3 = row.field3 

    }; 

    _newItems.Add(newpos); 

} 

Entities.SaveChanges(); 

foreach(Positions p in _newItems) 
{ 
    Console.WriteLine("ID for new item is: {0}", p.ID); 
} 

Après les articles ont été sauvé, leur champ représentant le champ INT IDENTITY devrait être mis à jour automagiquement, par EF, sans que vous fassiez quoi que ce soit d'autre. Inspectez juste le champ!

+0

Ah, je vois. Merci pour cela, technique très utile. – baffled68

Questions connexes