質問: _context.Database.BeginTransaction()) { // Create a few entities and add them to the EF context ... // Insert the rows: hopefully at this point, my transaction is not commited yet. _context.SaveChanges(); // I then want to update a few rows with a raw sql statement without // having to load the entities in memory. _context.Database.ExecuteSqlCommand("UPDATE ..."); // Now that I have inserted and inserted some data, I want to commit all these // changes atomically. transaction.Commit(); } ``` これは安全ですか? SaveChangesとExecuteSqlCommandが同じMySqlConnectionで実行されることを保証していますか? SaveChangesを呼び出すと、接続が閉じられ、接続プールに戻されるという感覚があります。次に、私のExecuteSqlCommandはプールから新しい接続を受け取ります(同じものか別のものか)。私の最初の接続(トランザクションを開いた場所)はプールに戻され、別のスレッドによって再利用される可能性があります。 これはちょうど感傷です、そして、これが問題を引き起こすかどうか私は完全には分かりません。 最後の私の本当の質問は次のとおりです。 * トランザクション内でSaveChangesとExecuteSqlCommandを使用するのは安全ですか?
回答: MySql.Data.EntityFrameworkCore / MySql.Data 6.10.1-betaから6.10.3-rcにアップグレードしました。問題がなくなったようです。問題はランダムであったので、問題は実際に修正されていることは完全には確信できませんが、それほど良いことはありません。