2016-12-05 3 views
0

Dans mon ActionResult, je veux soumettre un travail et un Image, et l'objet de l'image doit avoir un JobID mais si je n » t saveChanges d'abord pour l'objet Tâche, l'ID ne va pas en avant.ne peut pas passer ID d'objet à un autre objet avant si je ne l'utilise db.SaveChanges()

var jobs = new Job 
{ 

ID = job.ID, 
. 
. 
//blabla other attributes 
} 

db.Jobs.Add(jobs); 
db.SaveChanges(); 

Ici, je créer un objet img

img.JobID = jobs.ID; 

db.Entry(img).State = System.Data.Entity.EntityState.Added; 

db.SaveChanges(); 

Et ici je dois SaveChanges sur plus de temps pour sauver le Image, et je ne suis pas id dans JobID si je ne SaveChanges après Je crée un objet de travail, comment puis-je SaveChanges une seule fois? Comme je l'ai entendu n'est pas une bonne pratique d'avoir plusieurs SaveChanges dans le même ActionResult.

+1

lorsque vous utilisez la génération d'identification automatique, la base de données va générer id lors de l'insertion ligne à base de données, la solution est d'utiliser id manuel, par exemple guid et vous pouvez l'utiliser avant d'enregistrer l'enregistrement. – SalmanAA

Répondre

0

Essayez si vous créez relation correcte, obtenez ci-dessous comme concept à demander votre numéro:

var jobs = new Job 
{ 
    ID = job.ID, 
    . 
    . 
    Image = new Image() { ... } 
    } 

    db.Jobs.Add(jobs); 
    db.SaveChanges();