Почему при выполнении операций с базой данных Entity Framework выдает ошибку?
Имеется некий скрипт занесения записей в базу данных. Данные заносятся в различные таблицы в большом количестве в рамках одной транзакции. Во время выполнения периодически (не всегда) возникает ошибка:
System.InvalidOperationException: An exception has been raised that is likely due to a transient failure.
---> Npgsql.NpgsqlException (0x80004005): Exception while reading from stream
---> System.IO.IOException: Unable to read data from the transport connection: Удаленный хост принудительно разорвал существующее подключение..
---> System.Net.Sockets.SocketException (10054): Удаленный хост принудительно разорвал существующее подключение. at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count)
--- End of inner exception stack trace ---
По какой причине возникает данная ошибка? Как исключить появление этой ошибки?
Akina, это длинная транзакция. Занесение происходит в рамках одной транзакции, поскольку в случае, если хотя бы одна из записей не проходит процедуру валидации, транзакция нужно отменить. А как проверить на соединение по тайм-ауту?
rollabushka, в общем случае это небезопасно: если транзакция реально длинная, то создается огромного размера транзакшн лог, хранящий собственно информацию, необходимую для корректного завершения или отката, что дает высокую нагрузку на сервер.
есть вариант нарезать данные на чанки, связанные внутри чанка, но сами чанки независимые друг от друга?