2016-08-01 2 views
0

Я пытаюсь сохранить данные в двух разных таблицах одним способом. Первый вызов db.SaveChanges(), корректно обновляет данные, но во второй раз, когда я вызываю SaveChanges, он ничего не делает, даже когда я четко изменяю данные.Entity Framework не сохраняет все изменения, внесенные в таблицы

PhaseStatus truckPhase = db.PhaseStatus.Where(x => x.TruckId == truckId).FirstOrDefault(); 
RTrucks truck = db.RTrucks.Where(x => x.Id == truckId).FirstOrDefault(); 

using (var ContextTransaction = db.Database.BeginTransaction()) 
{ 
    db.PhaseStatus.Attach(truckPhase); 
    var entryPS = db.Entry(truckPhase); 
    entryPS.State = EntityState.Modified; 
    db.SaveChanges(); //Success 

    if (truckPhase.Phase.PhaseName == "Not Started") 
     truck.Status = "Quoted"; 
    else truck.Status = "Active"; 

    db.RTrucks.Attach(truck); 
    var entryRT = db.Entry(truck); 
    entryPS.State = EntityState.Modified; 
    db.SaveChanges(); //Fails with no errors 
    ContextTransaction.Commit(); 
} 

Есть ли у кого-нибудь идеи, почему EF6 сделает это? Я делаю что-то неправильно?

+0

второй 'db.SaveChanges()' проходит в 'ContextTransaction.Commit()', но нет никаких изменений данные в моей таблице RTrucks ... – CareTaker22

+1

Используйте это: db.RTrucks.Add (грузовик). Добавьте(). –

+1

Вы устанавливаете состояние entryPS вместо entryRT. var entryRT = db.Entry (грузовик); entryPS.State = EntityState.Modified; –

ответ

3

В вашей второй смены кадра:

entryPS.State = EntityState.Modified; 

к

entryRT.State = EntityState.Modified; 
Смежные вопросы