2016-08-01 9 views
0

1つの方法で2つの異なるテーブルにデータを保存しようとしています。最初のdb.SaveChanges()コールはデータを正しく更新しますが、2回目に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がこれを行うのか誰にも分かりませんか?私は何か間違っているのですか? 2番目のブロック変更で

+0

二 'db.SaveChangesを()には、' ContextTransaction.Commit() ''を通過しますが、の変更はありません私のRTrucksテーブルのデータ... – CareTaker22

+1

これを使用:db.RTrucks.Add(トラック)。 Add()が行います。 –

+1

entryRTの代わりにentryPSの状態を設定しています。 var entryRT = db.Entry(トラック); entryPS.State = EntityState.Modified; –

答えて

3

entryPS.State = EntityState.Modified; 

entryRT.State = EntityState.Modified; 
関連する問題