我使用LINQ到實體(C#的WinForms)和我的數據庫結構如下建議的方法: 在數據庫回滾
所有的拳頭,我在表中插入新記錄「creditos」,因爲所有的表需要知道這張表的PK。我用的方法與像這樣
Credito cred = new Credito();
cred.Producto = credito.producto;
cred.Cantidad = credito.monto_prestamo;
cred.TasaInteres = credito.tasa_interes;
然後
context.creditos.AddObject(cred);
context.SaveChanges();
//Get the ID of the inserted record
credito.idCredito = cred.IDCredito;
使用所得到的表「creditos」的PK,我使用類似的方法中的其他表中插入此作爲FK。所以這裏的問題是:如果其中一個插入失敗,我該如何進行回滾?假設我已經在兩個表中插入了記錄,但是它沒有在第三個表中插入,我該如何刪除所有更改?
如果所有實體正確映射(像你解釋一下),我稱之爲單一的SaveChanges,但一些插入失敗,將SaveChanges方法處理回滾操作? –
默認情況下,它會創建一個事務,這意味着它會在失敗時回滾。檢查更多的這樣的問題:http://stackoverflow.com/questions/815586/entity-framework-using-transactions-or-savechangesfalse-and-acceptallchanges –
感謝的人,我今天新學到了一些東西! –