Entity Framework
トランザクション
サーチ…
Database.BeginTransaction()
1つのトランザクションに対して複数の操作を実行できるため、いずれかの操作が失敗した場合に変更をロールバックできます。
using (var context = new PlanetContext())
{
using (var transaction = context.Database.BeginTransaction())
{
try
{
//Lets assume this works
var jupiter = new Planet { Name = "Jupiter" };
context.Planets.Add(jupiter);
context.SaveChanges();
//And then this will throw an exception
var neptune = new Planet { Name = "Neptune" };
context.Planets.Add(neptune);
context.SaveChanges();
//Without this line, no changes will get applied to the database
transaction.Commit();
}
catch (Exception ex)
{
//There is no need to call transaction.Rollback() here as the transaction object
//will go out of scope and disposing will roll back automatically
}
}
}
コードをより自明にするので、 transaction.Rollback()
明示的に呼び出すことは開発者の慣習になることに注意してください。また、実装されていませんそこにEntity Frameworkのための(あまり知られて)、クエリプロバイダがあるかもしれ Dipsose
も明示的に必要となる正確に、 transaction.Rollback()
の呼び出しを。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow