Если на каждый Open не будет Close - гарантированный Fatal Error.
Помимо этого, есть еще 2 проблемы, которые могут возникнуть при использовании Open:
1. Если объект ранее был открыт на запись, или на чтение 255 раз - исключение. Вы как-то сами мне это подсказали
. Вот как проверить это перед открытием объекта? У транзакции нет таких ограничений. Я так понимаю, что она не переоткрывает объект, а находит его среди открытых и возвращает ссылку на него.
2. А что будет в Вашем примере, если открытый объект не удастся привести к Entity? Объект откроется, но не закроется, как я понимаю.