2016-12-05 10 views
0

В моем ActionResult я хочу отправить Работу и Image, а объект изображения должен иметь JobID, но если я не буду, t saveChanges сначала для объекта Job идентификатор не продвигается вперед.Невозможно передать идентификатор объекта другому объекту, если я не использую db.SaveChanges()

var jobs = new Job 
{ 

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

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

Здесь я создаю объект IMG

img.JobID = jobs.ID; 

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

db.SaveChanges(); 

И здесь я должен SaveChanges на больше времени, чтобы сохранить Image, и я не получаю идентификатор в JobID, если я не SaveChanges после Я создаю объект работы, как я могу SaveChanges только один раз? Как я слышал, не очень хорошая практика иметь несколько SaveChanges в том же ActionResult.

+1

при использовании автоматической генерации ID, база данных будет генерировать идентификатор при вставке строки в базу данных, поэтому решение заключается в использовании ручной идентификатор, например guid, и затем вы можете использовать его перед сохранением записи. – SalmanAA

ответ

0

Попробуйте, если вы создаете правильные отношения, получить ниже как понятие применить для выпуска:

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

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